我应该使用啥标准来评估 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 评估类来显示标准差值