NHibernate or LINQ to SQL如果开始一个新项目,您将对ORM NHibernate或LINQ使用什么以及为什么使用它。 各自的优缺点是什么。 编辑:LINQ to SQL不仅限于LINQ(感谢@Jon Limjap) 我问自己一个非常类似的问题,除了我不是在考虑NHibernate,而是在考虑WilsonORM,我认为它很好。 在我看来,有许多重要的区别。 LINQ:
NHibernate的:
真的要看如果您开发一个Rich(Windows)桌面应用程序,需要在其中构造对象,使用它们并最后保留它们的更改,那么我建议您使用NHibernate之类的ORM框架。 如果您开发的Web应用程序通常只查询数据,并且偶尔将一些数据写回到DB,那么我建议您使用像Linq这样的查询语言。 因此,一如既往,这取决于。 :-) 嗯...有NHibernate的LINQ。 也许您的意思是使用哪个:
我更喜欢NHibernate。 LINQ to SQL是相当轻量级的,但是它与您的数据结构紧密耦合,而NHibernate相对于NHibernate而言,后者在可以映射到表结构的对象定义类型方面非常灵活。 当然,这并不是说LINQ to SQL没有用:这个网站正使用它。我认为,在数据库架构不那么庞大的小型应用程序中启动和运行非常有用。 从NHibernate开始是个坏主意。仅通过适当的设置才能显示出良好的性能。尝试将EFv4用于大型项目,将L2S(也许是第三部分产品)用于中小型项目。这些产品比NHibernate更方便,更灵活,可让您快速入门。 清单不完整
LinqToSQL
缺点:
NHibernate的
缺点:
在两个ORM之间 如果出现以下情况,我会选择LinqToSql:
如果出现以下情况,我会选择Nhibernate:
注意:这是我的个人观点。我主要处理(疯狂的)旧式数据库和复杂的ETL作业,其中对象模型在SQL上有很大帮助。 NHibernate的主要缺点是无法使用方法调用。 它们不能转换为SQL。 为了避免这种情况,您必须重新创建表达式树,这很难做到。 我不使用(甚至不知道)NHibernate,我只是想证明一下:我使用LINQ to SQL大约两年了,用于MySQL和PostgreSQL数据库(在Windows上使用DbLinq,在Linux和Mac OS X上使用Mono)。 因此,LINQ to SQL不仅限于Microsoft产品。
我可以确认LINQ to SQL非常适合中小型项目,或者您可以完全控制数据库结构的大型项目。 注意:LINQ to SQL不支持多对多关系(但是,只需几行代码即可轻松实现)。 |