为企业级ASP.net MVC应用程序选择可靠的ORM

时间:2012-01-05 07:45:03

标签: c# nhibernate linq-to-sql entity-framework-4

我正在寻找最可靠的方式来制作企业ASP.net Web应用程序。

我发现ASP.net MVC成为我最喜欢的一个 然后,我发现我需要选择一种构建数据库驱动应用程序的方法 首先,我了解...

Linq to SQL

但我发现L2S不支持Oracle或MYSQL和 微软将在以后的版本中不再提供支持。 这是我想要确认的问题。

所以,我读到了......

EntityFramework Repository and Unit of work

然后,我非常喜欢它。但是,不幸的是,当我考虑增量数据库构建功能时,我发现这个框架让我遇到了困难。即使EntityFramework 4.3 Code First Migration功能可以执行此操作,我也看不到任何可以下载到脱机PC的安装程序。 而且我认为实体框架不够成熟。因为此EF迁移功能是静态测试版。所以API每次都可以改变。

所以,最后我读到了......

NHibernate

因为,我认为我可能有机会使用从Entity Framework获得的Repository逻辑和工作单元模式。

由于我对NHibernate非常初级,我想知道我是否真的需要使用Spring.Net来制作MVC应用程序?为什么我想知道的是,当我使用EntityFramework构建我的MVC应用程序时,我不需要像Spring.net这样的任何其他框架。

每个建议都会非常感激。

4 个答案:

答案 0 :(得分:2)

您无需使用Spring.NET即可使用NHibernate构建ASP.NET MVC应用程序。我认为NHibernate本身使用Spring.NET,但你可以自由地使用你想要的任何东西。出于您列出的确切原因,我会避开Linq2SQL以获取新项目。

NHibernate比实体框架更成熟,并且具有更多功能,但却有一些陡峭的学习曲线。这是一种平衡行为:更多功能,更多功能,但也更复杂。

正如您所说,EF迁移功能在功能和API方面尚未完全稳定。对于增量数据库更改,我使用不同的方法:首先使用EF代码在我的开发环境中不断重新生成(并重新填充)我的数据库。对于发行版,我创建了一个数据库迁移脚本,以将生产数据库更新为新版本(手动或使用Redgate工具)。

答案 1 :(得分:1)

你可以使用与其他orm相比具有高性能的nhibernate,并且可以根据需要进行自定义。 它是一个很好的开源框架。

答案 2 :(得分:0)

三:

  1. LINQ2SQL
  2. 实体框架
  3. 的nHibernate
  4. 是不错的选择。

    如果您想要对您的数据提供Linq查询的最佳支持,并且希望ORM尽可能轻量化,那么首先支持第一个。

    如果您想要增强Linq2SQL,请使用第二个。

    如果您计划支持各种不同的数据库服务器,请支持第三个但是您可以接受这样的事实:某些linq查询不仅仅在linq提供程序正在开发中,因此您必须使用一些替代方法来获取/设置你的数据。

答案 3 :(得分:0)