entity-framework - 我应该使用什么标准来评估 ORM?

标签 entity-framework nhibernate linq-to-sql orm

这里有很多问题询问“我应该对 x 和 y 使用什么 ORM”,但我没有看到任何专门询问如何选择一个的问题。相关:Why should you use an ORM? , What ORM should I use for a ASP.Net MVC project? , Are there good reasons not to use an ORM?和更多。

世界上有很多 ORM。我想知道如何比较它们。我听说过诸如事件记录模型和域模型之类的东西,但我不确定这些是什么意思。那么我可以用来比较一个 ORM 和另一个的一组好的标准是什么?

如果您想知道,我们的环境是 C#、MVC、SQL Server。

最佳答案

(如果可能,我尝试以非 .NET 特定的方式回答。)

选择 ORM 的最重要标准是您的业务需求。

我想说的另一个重要标准是您对 ORM future 可持续性的信念。微软倾向于每两年左右改变一次他们的数据访问技术,所以我想说 Entity Framework 的 future 还不清楚。 NHibernate 可能会走上与 NUnit 相同的道路——当微软发布 MSTest 时,NUnit 曾一度萎靡不振,但现在 NUnit 再次势头强劲,因为微软大多忽略了 MSTest。你必须在这里得出你自己的结论,现在微软似乎在给 Entity Framework 一些爱,但据我所知,它仍然不能很好地处理枚举,我还没有听说什么时候会改变。

另一个标准是您是否偏好开源技术或来自 Microsoft 的技术或商业第三方技术。

在某些时候,ORM 的特性会很重要。您可能需要使用多个 ORM 对您的场景进行原型(prototype)设计,以确定 ORM 的功能(和/或性能)是否符合您的要求。 NHibernate 是 .NET 空间中功能最丰富的 ORM。

您是否需要支持某个数据库供应商?选择一个支持你关心的 ORM。 SQL Server 是 .NET 世界中支持最广泛的数据库供应商。

您偏好代码优先还是数据库优先设计?选择一个支持你关心的 ORM。

您在事件记录、存储库和其他东西之间有偏好吗?选择一个支持你关心的 ORM。

我回答了下面链接的有关选择 .NET ORM 的部分问题,方法是提供指向人们询问他们应该在 StackOverflow 上使用哪个 .NET ORM 的所有时间的链接。阅读其他答案可以获得很多值(value)。

NHibernate, Entity Framework, active records or linq2sql

没有一个正确的答案,也没有一套正确的选择标准。您的业​​务需求是需要考虑的最重要因素。

关于entity-framework - 我应该使用什么标准来评估 ORM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7574863/

相关文章:

linq - 如何在单个 linq To Sql 语句中使用子查询、group by、max 和 top?

c# - Entity Framework 更新变更

c# - 尝试使用 lambda 表达式检索数据时发生转换错误

c# - NHibernate - 使用 QueryOver 选择多列的最简洁的方法

c# - Linq-to-Sql SubmitChanges 不更新字段......为什么?

c# - 林克到 SQL : Insert data

c# - 仅在运行时知 Prop 有类名的查询上下文

asp.net - 检查 Entity Framework 中 Linq 查询中的空值

NHibernate 碎片

.net - 我在哪里可以找到一个好的 NHibernate 和 ASP.NET MVC 引用应用程序