用LINQ to SQL或LINQ to EF替换NHibernate

mas*_*ani 0 c# linq nhibernate orm linq-to-sql

我们有一个很棒的项目,它使用NHibernate作为ORM.我们希望迁移到L2S或L2EF.我们可以做NHibernate所做的一切吗?

你建议我们做这项工作吗?这项工作的优点和缺点是什么?这两个ORM有共同的功能吗?

注意:我们的项目用C#编写.

And*_*are 5

你有令人信服的理由改变你的ORM吗?我认为不会改变任何东西,因为你有一个现有的应用程序可以很好地使用一个得到很好支持的良好持久性框架.

是的,你可以用NHibernate做任何你正在做的事情与实体框架(虽然不太确定LINQ to SQL)但是不要为了框架而切换.这就像你购买它们一周后换掉轮胎上的轮胎一样 - 拥有新的闪亮轮胎可能会令人兴奋,但在一天结束时,它们只是轮胎.你现在拥有的轮胎很好 - 或许还有其他应用领域可以从你为这个项目分配的时间中获益更多?


Pau*_*ner 5

除非你有一个很好的理由去改变你的ORM,这将是极大痛苦比它的价值.更改ORM与交换数据库提供程序一样重要.

NHibernate中将有一些功能在其他ORM工具中不存在(组件会立即浮现在脑海中),因此您必须找到解决方法或重新设计类或表结构来补偿更改.

你应该做这个工作吗?我建议不要.


Aar*_*son 5

如果你要切换我强烈建议不要使用linq到sql,因为未来很不清楚.至于NHibernate和linq与实体之间的功能差异,Ayende Rahien有一些关于差异的博客文章.

  1. nhibernate与实体框架4.0
  2. 回应ef如何更好
  3. 什么可以ef 4.0做那个nhibernate不能

仅供参考:Ayende是NHibernate团队的贡献成员.

关于你的第二个问题.如果知道NHibrinate是如何让你失败的话,很难建议做这项工作.根据产品的状态和大小,我会非常难以推荐更改像ORM这样的应用程序的整体部分,但需要深思熟虑.

无论如何,NHibrinate是一种非常可靠的产品,在.net开源社区中有着悠久的历史记录.另一方面,微软有介绍数据访问/ ORM解决方案并快速放弃它们的历史.