我正在寻找最可靠的方式来制作企业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这样的任何其他框架。
每个建议都会非常感激。
答案 0 :(得分:2)
您无需使用Spring.NET即可使用NHibernate构建ASP.NET MVC应用程序。我认为NHibernate本身使用Spring.NET,但你可以自由地使用你想要的任何东西。出于您列出的确切原因,我会避开Linq2SQL以获取新项目。
NHibernate比实体框架更成熟,并且具有更多功能,但却有一些陡峭的学习曲线。这是一种平衡行为:更多功能,更多功能,但也更复杂。
正如您所说,EF迁移功能在功能和API方面尚未完全稳定。对于增量数据库更改,我使用不同的方法:首先使用EF代码在我的开发环境中不断重新生成(并重新填充)我的数据库。对于发行版,我创建了一个数据库迁移脚本,以将生产数据库更新为新版本(手动或使用Redgate工具)。
答案 1 :(得分:1)
你可以使用与其他orm相比具有高性能的nhibernate,并且可以根据需要进行自定义。 它是一个很好的开源框架。
答案 2 :(得分:0)
三:
是不错的选择。
如果您想要对您的数据提供Linq查询的最佳支持,并且希望ORM尽可能轻量化,那么首先支持第一个。
如果您想要增强Linq2SQL,请使用第二个。
如果您计划支持各种不同的数据库服务器,请支持第三个但是您可以接受这样的事实:某些linq查询不仅仅在linq提供程序正在开发中,因此您必须使用一些替代方法来获取/设置你的数据。
答案 3 :(得分:0)
与其他ORM相比,NHibernate已经成熟。这是ayende的一些比较
http://ayende.com/blog/4351/nhibernate-vs-entity-framework-4-0
http://ayende.com/blog/137217/nhibernate-vs-entity-framework-usage