LINQ to SQL - 使用或不使用它是问题

时间:2010-08-10 17:33:47

标签: linq-to-sql

我来自不同的语言,对于使用什么和不使用什么,总会有不同的看法。您对使用或不使用LINQ to SQL的原因有什么看法和利弊?

另外我看到有一个LINQ to NHibernate,如果你有NHibernate,这值得使用吗?

我还没有安装NHibernate。

由于

2 个答案:

答案 0 :(得分:4)

此时我可能不建议使用LINQ to SQL。如果您正在进行新的开发,我建议改为ADO.NET Entity Framework

这是一个更加现实,主动开发的LINQ to SQL替代方案,因为它引起了微软的大量关注。

对于LINQ to Nhibernate ...如果您已经计划使用Nhibernate,这将为您提供LINQ的好处。我个人非常喜欢在我的项目中使用LINQ,因为我发现它使我的代码编写更快,更易于维护,所以我强烈推荐这个。然而,我可能仍然喜欢EF而非Nhibernate for .NET开发(它内置于框架中,由MS支持等)。

答案 1 :(得分:0)

这很难回答,不知道你想用它构建什么。

对于小规模项目,根据我的经验,您可以非常轻松地使用LINQ-to-SQL,并且易于使用。但它确实缺少一些功能(比如继承,我相信)。此外,Microsoft已停止进一步开发LINQ-to-SQL。

Microsoft目前的ORM / Persistence Framework是实体框架4.它正在由MS积极开发;它具有比LINQ-to-SQL更多的功能,并且被认为更适合企业级应用程序。使用EF4,您可以在查询中使用LINQ表达式,就像使用LINQ-to-SQL一样。

另一个选择是NHibernate,我将其用于我当前的项目,根据我的经验,这是两个世界。它可能对你有一些价值,它是开源的。它很容易上手,但要准备花一些时间学习更高级的概念。 LINQ-to-NHibernate在我们使用的版本(2.x)中并不十分成熟,但我认为它在3.0中得到了很大的改进。您可以在LINQ中进行一些查询,但好处是,您将能够依靠非常强大的HQL或Criterion API;当你需要的时候。

在我看来,这3个是目前.NET世界中最大的ORM竞争者。还有Subsonic或Castle ActiveRecord;我没有经验;但它们应该适合小型项目。

说了这么多,你需要仔细考虑你对ORM的要求,测试一下(写一些模仿你将要做的数据访问的PoC代码;看看设置是多么容易)。对此有简单的是/否答案。