当前位置: 首页 > 工具软件 > Just ORM > 使用案例 >

c# oracle orm,关于c#:ORM我可以选择哪些标准?

白丁雨
2023-12-01

问:这个问题是关于如何确定或选择Web应用程序的便捷ORM。

当开始一个新的Web应用程序时,对于我的项目或案例(Web应用程序),我认为一个特定的ORM优于另一个ORM的标准是什么?

我的问题的另一部分:当我启动任何Web应用程序时,我使用三层:

DB层(包含

连接,并处理CRUD

操作)

Managers层(数据访问

层)上的每个表的类

db(与

上一层)它包含CRUD

特定表的操作

以及其他必需的操作。

接口层

我使用对象数据源。是否被认为是ORM(作为一个概念),或者在理解这个概念时我错了。

注意:我仍然是该领域的初学者,并且每天我都学习有关Web开发的更多信息。

请我对此进行解释和建议。

提前致谢。

您使用哪个DBMS?

我经常使用SQL Server,但有时我使用mysql或INFORMATIONIX。

我只使用linq2sql。据我所知linq2sql仅支持MSSQL。

实体框架是一个很好的起点,特别是对于SQL Server

您是否以S#arp体系结构为例来说明您的体系结构?在我的项目中,我通常使用类似它们的东西。

哦,我希望人们不会建议S#arp Architecture,但它的失败。

@Phill,以前没有使用过S#arp,但是为什么您认为它失败了?有兴趣知道。

只会引起更多的问题,而无法解决。尝试在几个项目上使用它,然后将其完全撕掉,然后重新开始(尽我们所能)。知道也有其他人遇到问题,最终围绕S#arp进行设计,因为它所做的事情与他们所需的有所不同。我也不喜欢自动映射,我更喜欢显式映射所有内容。多数民众赞成在个人偏好。

我也不想在项目中使用s#arp库...您可以使用自己喜欢的ORM为具体项目编写自己的解决方案,而s#arp可以作为示例。而且我不能说s#arp失败-在许多项目中它的表现都很好...

我个人从来都不是任何Microsoft ORM解决方案的忠实拥护者,我使用sql服务器并手动编码我的实体,以及从db获取数据并填充实体的代码,我使用存储的proc进行数据的CRUD操作, db方法在需要的地方获取事务对象,如果不为null,则在事务上运行命令。编写代码很麻烦,但实际上易于维护和管理。

@ just_name,linq2sql不是一个好选择,在linq2sql的EF泄漏中解决的EF也非常易于使用。总之,如果仅依靠linq会遇到很多问题,那么linq abd很难在linq2sql和EF中同时处理linq2sql和EF中的批处理更新,但是使用本机查询很容易。

至于ORM,一切都与味道有关。 nhibernate和Entity框架是最常见的框架。

口味,我认为有一些标准,我问他们以及有关sql到linq的问题。

标准是最适合您的需求的。 我是Subsonic风扇,虽然有时我需要为此做一些额外的工作,但我还是喜欢它。

您不会找到具体的选择标准-这是口味和偏好的问题,但是您可以在此处找到比较特征

我将Devart LinqConnect用于中小型项目(尤其是对于Web项目),并将Entity Framework用于大型项目。这些产品既方便又灵活,可让您快速入门。 LinqConnect包括允许与Oracle,MySQL,PostgreSQL,SQLite一起使用的提供程序。我使用第三方提供程序进行实体框架自定义。

关于简单的数据库访问,似乎有很多意见认为哪种是访问数据库的最佳方法。

我目前正在使用NHibernate,它在MS Sql和MySql中非常有效。我在这里找到了一个博客条目,该条目显示了如何使用Nhibernate连接到MYSQL。

对我而言,决定性因素是查看您将要使用的数据库,然后从那里进行决策。 Scott Guthrie宣布了使用实体框架版本4的Code First框架。虽然我知道Entity Framework 4.0可与Mysql一起使用(链接),但是我不确定Code First。可以在这里找到Code First开发的教程。

最终,我认为他们都差不多完成了相同的工作,尽管如果我开始研究ORM并希望简单一些,我可能会选择Code First方法,因为它看起来确实很容易。但是我没有经验。我只读过它。

希望这可以帮助。

对于Microsoft世界,坚持使用ado.net实体框架

对于开源世界,请坚持使用nhibernate。

我正在阅读冬眠的人写的一本关于冬眠的书,从广义上讲,任何将关系模型映射到对象模型(例如将外键转换为包含的对象)的东西都是ORM。

作者将ORM放在不同的类别中,例如Nhibernate属于完整ORM的类别,它在运行时为ex。生成SQL。

其他一些工具,例如LLBGen,需要通过连接到数据库来创建静态dll,然后再使用它们。

选择ORM时,应该查看用户群,如果ORM是活动的,例如Hibernate的最新版本和快速错误修复,那么Hibernate可能是使用最广泛的用户,.net中有Fluent Nhibernate可以配置没有xml文件,休眠状态为此使用带注释的类。

我个人建议您使用基于Hibernate的ORM,ROR活动记录中的标准是我想...

最著名的是nhibernate和EF,就我个人而言,我更喜欢EF,它的速度要比nhibernate更好(通过linq),对于使用EF,我认为Code First是最有用的启动程序。

对于选择哪个ORM(在EF和nhibernate之间),您可以查看对nhibernate熟悉的Ayende Rahien的博客,他在这篇文章中说nhibernate的成熟度更好,但是linq2EF比nhibernate更好,我可以给您的简单示例是:

您有2级主细节,在nhibernate中,您应该执行hql从详细项目中检索具有特定条件的项目,但是在EF中,您可以简单地完成它;此外,在EF中,我们提供了可以解决问题的实体功能,并且我希望它将来会更有用。

请注意,在Ayendes博客文章的底部,他指出NH3(及其新的linq提供程序)将缩小Linq性能方面的差距。 几周前,NH3加入了GA。 我已经使用了一段时间,并且与NH2相比其性能非常满意。

@Brook,您知道nhibernate3在linq中实现了SelectMany吗? 我非常有兴趣找到一个SelectMany,如何将其更改为在nhibernate中工作。

如@MikeAinOz先前所述,实体框架是一个不错的开始,您也可以在其中连接其他数据库。此示例也是程序分层的一个很好的起点:

http://layersample.codeplex.com/releases/view/47627

 类似资料: