我有一个web应用程序:
H 210f 211此项目目前使用自定义ORM解决方案生成的Ad。我不支持自定义ORM (它缺少许多高级功能),而是考虑切换到实体框架。
我在一个较小的项目上使用了EF 4.1 (代码第一),它运行得很好,但是对于上面一个更大的项目,它是否可伸缩呢?
发布于 2011-08-06 00:16:37
我(非常)同意marvelTracker (和Ayende)的想法。
不过,以下是一些进一步的信息:
密钥策略
当使用GUID作为主键时,有一个众所周知的成本.它是由Jimmy描述的,它已经在http://www.informit.com/articles/article.aspx?p=25862上公开发布。NHibernate支持GUIDCOMB主密钥策略。然而,要在EntityFramework中实现这一点有点棘手,需要额外的步骤。
Enum
EntityFramework本机不支持枚举。直到六月,CTP增加了对Enums http://blogs.msdn.com/b/adonet/archive/2011/06/30/walkthrough-enums-june-ctp.aspx的支持,映射枚举的唯一方法是使用解决方案--请看:How to work with Enums in Entity Framework?
查询:
NHibernate提供了许多查询数据的方法:
https://www.re-motion.org/web/)
ISession的QueryOver:
// Query that depends on a session:
premises = session.QueryOver<Premise>().List();分离的QueryOver:
// Full reusable query!
var query = QueryOver.Of<Premise>();
// Then later, in some other part of ther application:
premises = query.GetExecutableQueryOver(session).List(); // Could pass IStateleSession too.开源
NHibernate在http://sourceforge.net/projects/nhcontrib/有很多贡献项目可用。
该项目为NHibernate提供了一些非常有用的扩展(除其他外):
缓存提供程序(用于对没有默认cache)
)。
支持
EntityFramework提供了微软的支持。NHibernate有一个活跃的社区:
另外,请看一下:http://www.infoq.com/news/2010/01/Comparing-NHibernate-EF-4
发布于 2011-08-05 12:33:44
NHibernate是您的最佳选择,因为它支持复杂查询、二级缓存和极大的优化支持。我想EF已经到了。如果您正在处理遗留系统,NHibernate是最好的方法。
http://ayende.com/blog/4351/nhibernate-vs-entity-framework-4-0
发布于 2011-08-04 15:40:24
合适是一个有趣的术语。它有用吗?是的,您将发现许多非常适合于快速应用程序开发的优秀特性。也就是说,这是一种半生不熟的技术,而且缺乏它自己的前身LINQ的许多高级特性(甚至在它第一次发布3年后)。以下是一些烦恼:
)。
尽管如此,微软在这方面付出了很大的努力,希望随着时间的推移,它将继续进步。我个人会花时间实现一个抽象的存储库/工作单元模式,这样您的代码就不知道它在使用EF,如果有必要,您可以在将来切换到另一个LINQ提供程序。
大多数现代的ORM将是从即席SQL的一个进步。
https://stackoverflow.com/questions/6944291
复制相似问题