我有一个 Web 应用程序:
本项目目前使用 Ad-Hoc Sql,由自定义 ORM 方案生成。
我不支持自定义 ORM(缺少许多高级功能),而是考虑切换到 Entity Framework 。
我在一个较小的项目上使用了 EF 4.1(代码优先),它运行得很好,但是对于上面更大的项目,它是否可扩展?
最佳答案
我(高度)同意 marvelTracker(和 Ayende)的想法。
不过,这里有一些进一步的信息:
重点战略
使用 GUID 作为主键时有一个众所周知的成本。它由 Jimmy Nilsson 描述,并已在 http://www.informit.com/articles/article.aspx?p=25862 上公开发布。 . NHibernate 支持 GUIDCOMB 主键策略。然而,在 EntityFramework 中实现这一点有点棘手,需要额外的步骤。
枚举
EntityFramework 本身不支持枚举。直到六月 CTP 增加了对枚举的支持 http://blogs.msdn.com/b/adonet/archive/2011/06/30/walkthrough-enums-june-ctp.aspx映射枚举的唯一方法是使用变通方法 请查看:How to work with Enums in Entity Framework?
查询:
NHibernate 提供了多种查询数据的方法:
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 提供了许多非常有用的扩展(以及其他):
支持
EntityFramework 附带 Microsoft 支持。
NHibernate 有一个活跃的社区:
另外,看看:
http://www.infoq.com/news/2010/01/Comparing-NHibernate-EF-4
关于entity-framework - Entity Framework - 它是否适合企业级应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6944291/