我应该用什么标准来评估ORM?

时间:2011-09-27 19:50:07

标签: 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与另一个ORM进行比较呢?

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

1 个答案:

答案 0 :(得分:5)

(我尽可能以非特定的.NET方式回答。)

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

我想说另一个重要标准是您对ORM未来可持续性的信念。微软每两年左右就会改变他们的数据访问技术,所以我想说实体框架的未来还不清楚。 NHibernate可能遵循与NUnit相同的路径 - 当微软发布MSTest时,NUnit已经萎缩了一段时间,但现在NUnit又有动力,因为微软主要忽略了MSTest。你必须在这里得出你自己的结论,现在微软似乎给了实体框架一些爱,但据我所知,它仍然没有很好地处理枚举,我没有听到何时可能发生变化。

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

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

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

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

您是否对活动记录与存储库之间存在偏好?选择一个支持你关心的ORM。

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

NHibernate, Entity Framework, active records or linq2sql

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