有利于启动; Linq to SQL 还是 Nhibernate?

Posted

技术标签:

【中文标题】有利于启动; Linq to SQL 还是 Nhibernate?【英文标题】:Which is beneficial for start up; Linq to SQL or Nhibernate? 【发布时间】:2009-11-15 16:26:45 【问题描述】:

我想学ORM,不知道哪个对创业有好处; Linq 到 SQL 或 Nhibernate。考虑时间,适应...等

【问题讨论】:

我认为 Linq to SOL 更好,因为它是微软的纯产品。 这不是***.com/questions/26971/nhibernate-vs-linq-to-sql的复制品 【参考方案1】:

要问自己的一个重要问题是您是否可以接受对 SQL Server 的依赖。例如,数据库后端是否会更改为 Oracle? LINQ to SQL 与 SQL Server 紧密耦合,而 NHibernate 则不是。我并不是说这一定是一个不好的限制,但考虑到这一点很重要。

NHibernate 在过去几年里确实取得了长足的进步。例如,我真的很喜欢 Fluent NHibernate,但这并不是说 LINQ to SQL 有限制。我喜欢与 Visual Studio 的集成,它已经证明自己不仅能够处理一致的负载(例如 Stack Overflow 使用 LINQ to SQL)。

与流行的看法相反,LINQ to SQL is not dead。

编辑:要问自己的另一个重要问题是是否要更改域模型。 LINQ to SQL 将对象直接映射到表。另一方面,NHibernate 允许一个间接层。顺便说一下,Entity Framework 也是如此。

【讨论】:

是的,这是有道理的——对于认真的企业开发人员来说。 OP 明确表示他想开始学习 - 为此,我认为 Linq-to-SQL 及其视觉设计器比 NHibernate 容易得多...... 我完全同意视觉设计师的观点。【参考方案2】:

我会选择 NHibernate,因为那里有一个很好的开源社区支持它,回答有关它的问题等等。随着您的产品变得越来越大、越来越复杂,您将欣赏 NH 的强大功能和灵活性。最后,Linq-to-sql 不在 MS 的长期计划中,因为他们希望您使用实体框架,因此您最终可能会遇到死胡同。

【讨论】:

Linq-to-SQL 仍然在 .NET 4 / VS 2010 中得到正式和完全支持 - 没有理由放弃它【参考方案3】:

我会投票支持 Linq-to-SQL - 为什么?

它有一个视觉设计器,可以让您更轻松、更快速地获得结果并看到一些东西 NHibernate 非常强大 - 但这也让学习变得更加困难;你必须非常喜欢尖括号汤(即大量的 XML 映射文件)才能跟上 NHibernate 的速度

【讨论】:

事实上,对象关系设计器似乎很难。从哪里可以找到好的教程?【参考方案4】:

如果您没有使用 ORM 的经验,Linq to SQL 比 NHibernate 更容易学习。它还可以更好地与 Visual Studio 集成。

【讨论】:

@marc,这就是我想说的,不幸的是我没有使用正确的术语,英语不是我的母语 :-) 我已经更新了我的帖子。感谢您的澄清。 @Darin:我在想你可能想说那个,只是把词弄混了——没问题! :-)【参考方案5】:

我喜欢 Linq to SQL,它非常易于使用。实现存储库模式并使用 LINQ to SQL 作为存储库接口背后的第一个实现。您会发现使用该工具快速建立存储库非常容易。您始终可以使用 NHibernate 实现第二个存储库,而不会破坏您的应用程序,然后将您的体验与这两种工具进行比较。

NHibernate“更强大”...我想这意味着您可以将它用于任何数据库,仅此而已。还有很多东西要学,如果你确实走这条路,请确保充分利用 Fluent NHibernate 以避免所有映射垃圾。维护一堆 XML 映射要干净得多。

我发现 NHibernate 令人沮丧,因为我喜欢使用 LINQ 查询数据库并将投影(映射)到模型。我知道有一个 LINQ to NHibernate 浮动,但我不能说我认识任何使用它的人。

一般来说,如果您乐于通过 ID 获取所有内容并从那里遍历对象模型,我会说使用 NHibernate。一旦你想执行更复杂的查询,你最好准备好迎接一些挫折。

【讨论】:

【参考方案6】:

Linq to SQL 应该被实体框架取代;我认为 NHibernate 会是一个不错的选择,因为有很多参考资料,而且它似乎也被广泛使用。

【讨论】:

Linq-to-SQL 仍然在 .NET 4 / VS 2010 中得到正式和完全支持 - 没有理由放弃它 再说一遍——如果你把整个公司都押在这个策略上,那肯定是有道理的——但是对于初学者来说,Linq-to-SQL 更容易学习和很多比EF懂。并不是说 EF 不好....如果您刚刚开始的话,只是涉及更多、复杂和太多.... LINQ to SQL 绝对还活着。即使 EF 是未来首选的数据访问技术,LINQ to SQL 也不会消失——它在框架中。我们稍微偏离了主题,但我不同意 EF 比 LINQ to SQL(尤其是 4.0)要困难得多。我意识到最初的版本有很多缺点,但我认为它并没有人们想象的那么糟糕。我对 4.0 版本感到非常兴奋。我一直在玩它,我真的很喜欢 MS 的方向。【参考方案7】:

除了达林的回答,考虑一下我之前读过的这篇文章。

Linq to SQL 更容易更快地实现和快速集成,但如果您需要更多控制,Nhibernate 可以为您提供更大的灵活性。最近,我不得不决定是否要在我的新应用项目中使用 Linq to SQL - 我只是不喜欢缺乏灵活性。

NHibernate vs LINQ to SQL http://www.acceptedeclectic.com/2007/12/linq-to-sql-vs-nhibernate-part-1-what.html

如果有帮助,请告诉我。

【讨论】:

以上是关于有利于启动; Linq to SQL 还是 Nhibernate?的主要内容,如果未能解决你的问题,请参考以下文章

Linq To SQL和Linq To Object的批量操作InsertAllOnSubmit介绍

DLinq 演变成哪一个——Linq to SQL 还是实体框架?

LINQ to Dataset 是 LINQ to EF 的子集还是这两者是独立的?

LINQ to Dataset 是 LINQ to EF 的子集还是这两者是独立的?

Linq To NHibernate Plus sql 用户定义函数

我应该开始使用 LINQ To SQL 吗?