有点澄清:我正在浏览Julia Lerman在实体框架上的Oreilly头衔,我感到非常困惑。
我有Charlie Calvert的基本LINQ,但是在我与Lerman的书的10分钟会话中,发现LINQ是LINQ to SQL,它的DataContext对象似乎功能不足......
虽然Entity Framework是未来,但它有一个叫做Entity SQL的东西,在我眼里看起来就像Transact-SQL。现在我的眼睛可能有点生疏,但问题是:
由于实体框架是微软支持的主要内容,因此学习LINQ to SQL是否有任何意义
var numberGroups =
from n in numbers
group n by n % 5 into g
select new { Remainder = g.Key, Numbers = g };
我认为Entity SQL和LINQ是两种不同的技术,实际上SQL实际上是否使用LINQ,我感到很困惑?
发布了我收到的许多回复:
好的伙计们,我是新手,所以这次我正在编辑我的答案;-) 非常感谢您的全面,快速和非常有用的答案。 问候 MereMortal
答案 0 :(得分:25)
LINQ!= LINQ-to-SQL
LINQ是一个概念,包括一些语言支持。有许多实现 - LINQ-to-SQL就是其中之一,ADO.NET数据服务,实体框架的LINQ到实体,LINQ到对象,LINQ到SQL,LINQ到亚马逊,DbLinq等
您仍然使用LINQ with Entity Framework;实际上,LINQ-to-Entities是首选,提供编译时静态检查。实体SQL只是查询EDM(实体数据模型)的另一种机制(除了LINQ到实体之外)。
ESQL有三个主要原因:
对于其他所有内容,LINQ应该是您使用Entity Framework的工具。
答案 1 :(得分:9)
LINQ是语言功能的通用术语,允许通过某种数据存储在C#或VB.NET中编写查询。有LINQ to SQL,LINQ to Entities,LINQ to Objects等。
LINQ to SQL密切建模物理数据库结构。它为数据库中的每个表生成一种类型。如果数据库发生更改,则需要更改LINQ to SQL代码。
LINQ to Entities更接近模拟概念数据库设计。它允许您映射到物理数据库,但是,例如,允许您创建一个包含Person和Contacts表中数据的Person实体。这允许您的呼叫者根据数据意味着而不是数据的实现方式进行思考。
此外,微软已经表示,与LINQ to Entities的开发相比,LINQ to SQL的未来发展将受到限制。鉴于灵活性的提高以及LINQ to SQL无法获得更多增强的事实,我将使用LINQ to Entities and Entity Framework。
答案 2 :(得分:4)
正如其他人所说,你可能意味着Linq to SQL vs Entity Framework。
两者都适用于SQL Server,但只有Entity Framework适用于其他数据库。此外,LINQ to SQL或多或少地被折旧了。那么请使用Entity Framework。
答案 3 :(得分:1)
Linq是一种编程结构,可让您查询对象
我认为你正在谈论一个Linq to Sql。
你总是可以使用linq来查询EF对象......
答案 4 :(得分:1)
哇哇哇慢下来。
简答:实体框架
更长的答案:
LINQ to SQL和Entity Framework是数据访问技术。
据MS说,Linq是LINQ是.NET的一组扩展 包含的框架 语言集成查询,集合和 变换操作。它扩展了C# 和Visual Basic使用母语 查询语法并提供类 图书馆利用这些 能力。
来自:http://msdn.microsoft.com/en-us/netframework/aa904594.aspx
LINQ to SQL和Entity Framework都有Linq提供程序,在查询时允许使用这种非常棒的语法。
答案 5 :(得分:0)
实体框架具有LINQ to Entities,因此您也可以针对EF执行非常相同的查询。而我的回答将是对EF投入更多,因为推特EFv4看起来很有希望。
答案 6 :(得分:0)
根据我的理解,EF还没有为黄金时间做好准备,并且它不支持许多LINQ2SQL中现在很容易使用的LINQ结构。
如果您可以为您的应用程序提交SQL Server,我今天说,学习LINQ2SQL。使用LINQ时,您将有更多的查询功能。
我打赌当EF准备就绪时,对你来说这将是一个更容易的转换,因为查询语言应该是可转移的。
祝你好运。答案 7 :(得分:0)
我去了12月2日和3日在蒙特利尔的微软TehcDays,他们说,他们将在几年内不再支持LINQ to sql,所以你最好开始学习LinQ to entity(实体框架)。