ma7*_*oud 33 orm .net-4.0 c#-4.0
什么是最好的方法是使用像Nhibertate或实体框架的ORM或做客户ORM.我将这个ORM用于C#4.0项目
Pan*_*vos 65
2016年更新
六年后事情变得非常不同.NHibernate几乎被抛弃,其他选择被抛弃(例如Subsonic),实体框架可能是最常见的全功能ORM,人们多年来一直在转向像Dapper这样的微型ORM,从查询到对象的映射最少高架.
应用场景也发生了变化.Web服务和REST API需要为大量较小的请求提供服务,而不是以牺牲内存和性能为代价来加载和缓存一个大对象图.这意味着完整的ORM开销不再可接受.
这意味着像Active Record这样的模式和技术,每个请求的事务等已经成为吞吐量和可扩展性,从而消除了反模式
现在最重要的功能之一是异步执行,以减少因等待而导致的线程和CPU浪费.NHibernate从未实现过这种转变.
原始答案
定义"最佳":它是最成熟的,具有更多文档,更大社区,更主流的那个?
NHibernate更成熟,功能更丰富,拥有更高级的社区,当MS决定再次破坏兼容性时,不太可能停止使用.实体框架更为主流,并且支持开箱即用.你会发现更多关于EF的初学者书籍,更多关于NH的高级书籍.
一个很好的选择是尝试一个更简单的ORM,比如Subsonic,一旦你理解了ORM的工作原理,有多少陷阱,什么SELECT N+1意味着[:P] ,就可以转向更高级的ORM
只是不要尝试创建自己的ORM,已经有几十个了!亚力士,Castle ActiveRecord,NH,EF(当然),LLBLGenPro ......
Mar*_*bik 13
如果你可以花一些钱,可以看看LLBLGEn Pro 3.0
如果您的预算很薄,请尝试NHibernate.它也是一个成熟的产品,但它有更大的学习曲线.如果你需要一些支持,你可以随时致电Ayende :-)
对于较小的项目,EF 4.0是一个不错的选择.
大多数ORM都有自己的优点和缺点.
例如,实体框架具有在框架本身中具有的巨大优势,但它也相当重,并且更难以启动和运行(更陡峭的学习曲线).
有一些非常好的,非常容易使用的商业ORM.我目前正在C#4项目中使用Lightspeed,对于这个特定场景非常满意.
它真正归结为您对ORM的需求.如果你想要非常快速和容易地设置和使用,Lightspeed,亚音速和其他非常好.如果你需要全功能,那么Entity Framework和NHibernate都是不错的选择.
从一般角度来看,将ORM称为最好的是完全不可能的.从不同的角度来看,每个人都是最好的.您选择了最符合您需求的产品.Linq2Sql的编写考虑了性能,但它缺乏对其他提供程序的支持,Linq2Sql非常快.然而,在处理SQL服务器时,还有其他一些可能不如Linq2Sql快,但它们支持各种各样的提供程序.最好的想法是列出您希望ORM为您的项目提供的功能,并选择满足您所有需求的功能.您可以要求这些问题为您的项目选择正确的ORM.