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更方便,更灵活,可让我们快速入门。