NHibernate或LINQ to SQL

Joh*_*ker 13 .net c# linq nhibernate linq-to-sql

如果开始一个新项目,你会为ORM NHibernate或LINQ使用什么,以及为什么.每种方法的优缺点是什么?

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

Dav*_*uda 13

我问过自己一个非常相似的问题,除了NHibernate而不是NHibernate,我考虑过我认为非常好的WilsonORM.

在我看来,有许多重要的差异.

LINQ:

  • 不是一个完整的ORM工具(你可以使用一些额外的库,比如最新的Entity框架 - 我个人认为MS的这种最新技术的架构与其他ORM框架相比大约有10年的历史)
  • 主要是查询"语言"支持intellisense(编译器会检查你的查询的语法)
  • 主要用于Microsoft SQL Server
  • 是闭源的

NHibernate的:

  • 是ORM工具
  • 没有intellisense的查询语言非常有限
  • 几乎可以与您拥有数据库提供程序的任何DBMS一起使用
  • 是开源的

这真的取决于.如果你开发一个Rich(Windows)桌面应用程序,你需要构建对象,使用它们并最终坚持他们的更改,那么我会推荐像NHibernate这样的ORM框架.

如果您开发的Web应用程序通常只是查询数据并且偶尔会将一些数据写回数据库,那么我建议使用像Linq这样的良好查询语言.

一如既往,这取决于.:-)

  • "有非常有限的查询语言而没有intellisense"有点误导...... NHibernate有HQL和Criteria API.Criteria是常规.NET代码,所以你**拥有IntelliSense.HQL没有intellisense. (3认同)

Jon*_*jap 10

呃...有NHIDnate的LINQ.

也许你的意思是使用哪个:

  • LINQ to SQL
  • NHibernate的

我更喜欢NHibernate.

LINQ to SQL相当轻量级,但它与数据结构的关系更紧密,而NHibernate在可以映射到表结构的对象定义类型方面非常灵活.

当然,这并不是说LINQ to SQL没有用处:这个网站使用它.我相信在数据库模式不那么庞大的小型应用程序中启动和运行是非常有用的.

  • 那么这个网站也不是"中等大小",它是一个相当大的.com所以很明显LINQ to SQL适用于.com或电子商务.com类型的应用....我会假设. (2认同)