我应该使用啥标准来评估 ORM?

Posted

技术标签:

【中文标题】我应该使用啥标准来评估 ORM?【英文标题】:what criteria should I use to evaluate an ORM?我应该使用什么标准来评估 ORM? 【发布时间】:2011-09-27 19:50:07 【问题描述】:

这里有很多问题询问“我应该对 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。

【问题讨论】:

您必须根据您的要求评估 ORM @eranga:当然,但我的要求将来可能会改变,所以很高兴知道一个 ORM 与另一个 ORM 的区别,无论他们正在与什么数据库交谈 要求可能会改变,但您现在有一组要求。选择适合您当前需求的 ORM 比担心未来要好。 @Eranga 好的,那么在我提出一组符合我要求的 ORM 后我该怎么办?显然有一些会因为它们不能与我的数据库、服务器软件等一起使用而被淘汰。但是如何评估其余的呢?这就是我想要达到的目的。 这不是您在 OP 中提出的问题 :) 如果您提供更多详细信息,人们将能够为您提供更相关的答案。 【参考方案1】:

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

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

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

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

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

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

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

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

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

NHibernate, Entity Framework, active records or linq2sql

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

【讨论】:

以上是关于我应该使用啥标准来评估 ORM?的主要内容,如果未能解决你的问题,请参考以下文章

你应该知道的模型评估的五个方法

如何使用带有 Java 代码的 WEKA 评估类来显示标准差值

评估NoSQL数据库的五大标准

我将如何确定我应该使用哪个评估指标来进行机器学习中的分类问题陈述?

使用 mutate_ 进行标准评估以按组计算百分比

模型性能评估