我发现我可以使用NHibernate,甚至Castle,而不是Linq to Entities,或者linq to SQL。
我疯了吗?
答案 0 :(得分:18)
不,你不是疯了。 nHibernate是一个完整的OR Mapper,Linq to SQL和Linq to Entities没有实现OR映射器所期望的一切,并且针对的是一组略有不同的开发人员。
但是不要让那让你失去linq。 Linq仍然是个不错的主意。试试Linq到nHibernate: - )
答案 1 :(得分:6)
NHibernate,Castle等的一大缺点是它们的重量不是很轻(特别是NHibernate。)
Linq to SQL适用于轻量级,有限使用的ORM。
答案 2 :(得分:6)
我已经使用了NHibernate和LINQ to SQL。从我的角度来看,它取决于项目,如果我需要快速的东西,我会选择L2S,创建dbml映射并开始使用它是如此简单。如果我正在开发一个更高级别的企业解决方案,我会去尝试和信任的ORM - NHibernate,我发现了日志记录和交易功能简单易用。
LINQ to SQL的学习曲线相对较短,NHibernate的学习曲线更为陡峭。
LINQ to SQL仅支持SQL Server,因此如果你有一个Oracle数据库,那么已经做出了决定 - NHibernate。
我建议您查看http://www.summerofnhibernate.com/以了解有关学习NHibernate的优秀截屏视频。
答案 3 :(得分:4)
要记住的一件事是NHibernate可以成为一个绝对的配置 - 特别是因为它主要基于XML配置文件,因为它源于原始的Hibernate。
Fluent NHibernate在一定程度上减轻了痛苦。
Linq肯定会适应.NET工作的一般“方式”。
答案 4 :(得分:4)
Blockquote Linq当然适合.NET工作的一般“方式”
哎呀,这种情绪让我感到害怕。内置于.net中的RAD内容不是点网的工作原理,它只是一个用于获取原型的工具集。 .NET允许我们执行完整的DDD应用程序,具有高水平的内聚性,关注点分离,并允许我们编写解耦代码,尽管所有的尝试都会使事情成为偶然。我强烈反对.net喜欢被耦合,certian工具喜欢被耦合,我将在这个争论中包含linq到sql。 linq to sql破坏了拥有单独域模型的想法。我想到使用我的数据库模式作为底层模型对象时感到畏缩。适当的ORM工具应该允许我们首先建模我们的域,然后将我们的关系数据库链接到这些模型。不是相反。
答案 5 :(得分:1)
我还没有尝试过Entity Framework,但我肯定会推荐NHibernate而不是Linq to SQL;我能给出的最大理由就是控制权。 Linq to SQL喜欢对所有内容进行更多控制,加载对象并维护有关对象的各种跟踪信息。如果序列化/反序列化,跟踪信息可能会丢失,再次保存时可能会发生奇怪的事情。 NHibernate作为一个存储库应该工作得更多 - 你把它交给你想要的任何对象(当然你已经将它配置为理解),并且它将它放在数据库中,无论你用它做什么。