LINQ或ADO.net实体框架 - 要学习哪些内容?

时间:2009-05-14 22:19:53

标签: c# linq entity-framework entity

有点澄清:我正在浏览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

8 个答案:

答案 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-to-Entities仍在建设中时,它是早期预览中的唯一选项
  • 它可用于某些情况,其中 没有对象模型,例如报告服务
  • 有一个数量的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(实体框架)。