我即将开始一个新项目,并决定我将使用哪种数据访问技术......出于各种原因,我真的很喜欢LINQ to SQL,但是我应该使用实体框架来启动新项目吗?
我认为实体框架更加臃肿且不必要地复杂化,因此考虑到我考虑使用LINQ to SQL的部分原因......但正如我所说,这可能只是我自己的看法我没有那么多地使用实体框架。
那么人们会建议我今天开始使用新项目(注意这个应用程序将在未来几年内出现)?
干杯 安东尼
编辑: 我们是SQL Server商店,所以我们不需要数据库供应商独立。
通过使用与我的域对象一起使用的存储库模式来抽象数据访问atm的一般商定的最佳方法也是?
答案 0 :(得分:3)
LINQ to SQL是关于快速开发和简单的。如果您的数据模型很复杂,或者可能会变得如此,那么最好使用更强大的框架。
那就是说,比你的数据访问工具更重要的是你从代码的其余部分中抽象它的程度。如果做得好,你应该可以从LINQ to SQL开始,并在你超出它时切换(或当EF 2 4出来时)。
答案 1 :(得分:2)
请注意,EF 1远未完成。它缺少你在LINQ to SQL中找到的各种功能,其中一个更重要的功能是实际的外键属性(你能想象它们在EF 1中不存在吗?)
此外,EF 4几乎具有LINQ TO SQL的所有功能,并且两者都将生成相对可比(代码方面)的外部API,因此除非您编写的是非常LINQ to SQL特定的API,否则它应该相对容易稍后迁移到EF4,“简单地”通过用等效的EF4替换LINQ to SQL .dbml。
答案 2 :(得分:1)
Linq to SQL在每个类范例的活动记录/一个表中效果最佳。如果您需要在几个表中跨越您的类,或者支持复杂的继承,那么它可能不是最佳选择。此外,Linq to SQL本身不支持多对多关系(有解决方法)。
如果这些听起来都不会影响你,那么Linq 2 SQL可能是一个不错的选择。这是一个很好的轻量级数据访问策略。
在给定上述约束的情况下,Linq to SQL可用于很好地实现存储库模式。 Google将发布几个可行的Linq存储库示例。
答案 3 :(得分:0)
你有没有看过Subsonic - 现在在版本3中它基本上是一个linq到sql DAL,它可以在5分钟内完成你的整个数据库的完整linq到sql。它运行T4模板,所以如果你想添加到模板,它是非常容易
答案 4 :(得分:0)
我写了一篇关于选择.NET ORM的博文:
.NET and ORM - Decisions, decisions
基本上,NHibernate是你最好的选择。如果你坚持像LinqToSql那样简单的东西,请考虑SubSonic。我不推荐任何一个Microsoft选项:LinqToSql或EntityFramework。
根据您的要求决定是否使用存储库模式。
答案 5 :(得分:0)