NHibernate或者LINQ to SQL

时间:2020-03-05 18:50:31  来源:igfitidea点击:

如果开始一个新项目,我们将为ORM NHibernate或者LINQ使用什么以及为什么使用它。各自的优缺点是什么。

编辑:LINQ to SQL不仅限于LINQ(感谢@Jon Limjap)

解决方案

回答

嗯...有NHibernate的LINQ。

也许意思是使用哪个:

  • LINQ转SQL
  • NHibernate

我更喜欢NHibernate。

LINQ to SQL是相当轻量级的,但是它与数据结构紧密耦合,而NHibernate相对于NHibernate而言,后者在可以映射到表结构的对象定义类型方面相当灵活。

当然,这并不是说LINQ to SQL没有用:这个网站正使用它。我认为,在数据库架构不那么庞大的小型应用程序中启动和运行非常有用。

回答

我问自己一个非常类似的问题,除了我不是在考虑NHibernate,而是在考虑WilsonORM,我认为它很好。

在我看来,有许多重要的区别。

LINQ:

  • 并不是一个完整的ORM工具(可以通过一些其他库(例如最新的Entity Framework)到达那里-与其他ORM框架相比,我个人认为MS的这项最新技术的体系结构已有大约10年的历史了)
  • 主要查询支持智能感知的"语言"(编译器将检查我们查询的语法)
  • 主要用于Microsoft SQL Server
  • 是封闭源

NHibernate:

  • 是ORM工具
  • 没有智能感知的查询语言非常有限
  • 可以与我们拥有数据库提供程序的几乎所有DBMS一起使用
  • 是开源的

真的要看如果我们开发一个Rich(Windows)桌面应用程序,需要在其中构造对象,使用它们并最后保留它们的更改,那么我建议我们使用NHibernate之类的ORM框架。

如果我们开发的Web应用程序通常只查询数据,并且偶尔将一些数据写回到DB,那么我建议我们使用像Linq这样的查询语言。

因此,一如既往,这取决于。 :-)

回答

从NHibernate开始是个坏主意。仅通过适当的设置才能显示出良好的性能。尝试将EFv4用于大型项目,将L2S(也许是第三部分产品)用于中小型项目。这些产品比NHibernate更方便,更灵活,可让我们快速入门。