代码优先实体框架或 NHibernate

Posted

技术标签:

【中文标题】代码优先实体框架或 NHibernate【英文标题】:Code First Entity Framework Or NHibernate 【发布时间】:2011-07-25 07:22:58 【问题描述】:

我对 Code First EF 4.1 和 NHibernate 还是很陌生。 我需要开发一个必须具有以下功能的 ORM。

    使用复合键执行 CRUD 在某些情况下使用自定义 SQL 语句。 可以在运行时更改连接。 可以在执行之前或之后记录 SQL 语句。 需要同时支持 MS SQL 和 Oracle。

我有点困惑该选择哪一个。 请多多指教。

【问题讨论】:

【参考方案1】:

好吧,这里是功能的一般比较:

.net ORM Comparison

根据您的需要,EF 和 NH 都支持 1、2、3 和 5。

记录是另一回事。 EF绝对没有开箱即用的东西。 NH 记录所有内容,您可以选择不同的级别、记录器等。

【讨论】:

只是一个注意,两者都是......相同的(可以这样阅读,而您确实 NOT 明确说明了它;)。让我在 EF 中疯狂的是,我无法将 smallint (DB) 映射到 int (C#)。假设数据库管理员优化了一些主键(在具有数百万条记录的 fact 表中引用 - 合理)......我必须更改应用层实现。关注点分离在哪里?这不是 NHibernate 的问题。但是我到处都能找到这些细微的差别……【参考方案2】:

我使用 NHibernate,我认为您可以用它来满足您的所有要求。

尝试在这里查看更多信息:

Deciding between NHibernate vs Entity Framework?

【讨论】:

【参考方案3】:

我会选择 Nhibernate。它支持所有这些功能,并且目前比 EF 经受了更多的实战考验。

【讨论】:

【参考方案4】:

可能有点晚了,但我刚刚发布了 NHibernate 3.x 与 Entity Framework 5 和 6 的最新比较。http://www.dennisdoomen.net/2013/03/entity-framework-56-vs-nhibernate-3.html

【讨论】:

以上是关于代码优先实体框架或 NHibernate的主要内容,如果未能解决你的问题,请参考以下文章

用于一对零或一关系的实体框架 (EF) 代码优先级联删除

如何为实体框架代码优先迁移设置隔离级别

实体框架、代码优先和全文搜索

实体框架代码优先的性能

实体框架代码优先导航问题

实体框架代码优先:共享主键