2010-08-10 74 views
2

我来自不同的语言,总是对使用什么和不使用什么有不同的看法。对于为什么使用或不使用LINQ to SQL,你有什么看法和优缺点?LINQ to SQL - 使用还是不使用这是一个问题

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

我还没有安装NHibernate安装。

谢谢

+1

您可能想知道为什么微软同时提供LINQ-to-SQL和实体框架。微软数据MVP Shawn Wildermuth在他最近的文章[应该寻找微软故事趋势?](http://wildermuth.com/2010/08/09/Should_You_Be_Looking_for_Trends_in_Microsoft_Stories)中提供了一个很好的解释。他在文章的第二到最后一段提到了LINQ到SQL和EF。 – 2010-08-10 17:43:20

+0

我在大公司工作,所以我不打算构建小应用程序。我目前正在学习,所以我可以成为未来更好的计划。我有很多东西要学会确保我和其他人在同一页面上。 – 2010-08-10 18:01:40

回答

4

我可能不会推荐使用LINQ to SQL在这一点上。如果您正在进行新的开发,我建议您改为ADO.NET Entity Framework

这是一个更现代,积极开发的替代LINQ to SQL的替代方案,因为它受到了微软公司的广泛关注。

至于LINQ to Nhibernate ...如果您已经计划使用Nhibernate,这会给您带来LINQ的好处。我个人非常喜欢在我的项目中使用LINQ,因为我发现它使我的代码编写得更快,更易于维护,所以我强烈建议您这样做。不过,我可能仍然会优先考虑使用Nhibernate进行.NET开发的EF(它内置于框架中,由MS等支持)。

0

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

对于小规模项目,我的经验是,您可以非常容易地使用LINQ到SQL来启动并运行,并且很容易使用。但是,它确实缺乏一些功能(比如继承,我相信)。此外,微软已经停止进一步开发LINQ到SQL。

微软当前的ORM/Persistence Framework是Entity Framework 4,它正在由MS积极开发;它具有比LINQ-to-SQL更多的功能,并且被贴上了更适合企业级应用程序的标签。使用EF4,您可以在查询中使用LINQ表达式,就像使用LINQ到SQL一样。

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

在我看来,这3个是目前.NET世界中最大的ORM竞争者。还有Subsonic或Castle ActiveRecord;我没有经验;但他们应该适合于小项目。我们需要仔细考虑你对ORM的需求,测试一些(编写一些PoC代码,模拟你将要做的数据访问;看看它是多么容易设置) 。对此很容易是/否。