12

澄清一下:我正在浏览 Julia Lerman 在实体框架上的 Oreilly 标题,我非常困惑。

我有 Charlie Calvert 的基本 LINQ,但是从我与 Lerman 的书的 10 分钟会话中,可以看出 LINQ 是 LINQ to SQL,它的 DataContext 对象等似乎功能不足......

虽然 Entity Framework 是未来,但它有一个叫做 Entity SQL 的东西,在我看来它看起来与 Transact-SQL 完全一样。现在我的眼睛可能有点生锈了,但问题是:

既然 Entity Framework 是微软支持的主力,那么用它来学习 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

4

8 回答 8

25

LINQ != LINQ-to-SQL

LINQ 是概念,包括一些语言支持。有许多实现 - LINQ-to-SQL 就是其中之一,ADO.NET 数据服务、Entity Framework 的 LINQ-to-Entities、LINQ-to-Objects、LINQ-to-SQL、LINQ-to-Amazon、DbLinq 等也是如此.

您仍然将 LINQ 与实体框架一起使用;事实上,LINQ-to-Entities 是首选,它提供编译时静态检查。Entity SQL 只是另一种用于查询 EDM(实体数据模型)的机制(除了 LINQ-to-Entities)。

ESQL 有用的主要原因有 3 个:

  • 当 LINQ-to-Entities 仍在构建中时,它是早期预览版中的唯一选择
  • 它可以用于一些没有对象模型的场景例如报表服务
  • 少数情况下 ESQL 更具表现力

对于其他一切,LINQ 应该是您使用实体框架的工具。

于 2009-05-14T22:23:58.390 回答
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 和 Entity Framework。

于 2009-05-14T22:22:35.117 回答
4

正如其他人所说,您可能是指 Linq to SQL vs Entity Framework。

两者都适用于 SQL Server,但只有实体框架适用于其他数据库。此外,LINQ to SQL 或多或少地被贬低了。所以去实体框架。

于 2009-05-14T22:25:47.807 回答
1

Linq 是一种编程结构,可让您查询对象

我认为您正在谈论一个 Linq to Sql。

您始终可以使用 linq 查询 EF 对象...

于 2009-05-14T22:23:06.067 回答
1

哇哇。那里慢点。

简短答案:实体框架

更长的答案:

LINQ to SQL 和实体框架是数据访问技术。

根据 MS 的说法,Linq 是

LINQ 是 .NET Framework 的一组扩展,包含语言集成的查询、设置和转换操作。它使用用于查询的本机语言语法扩展了 C# 和 Visual Basic,并提供了类库以利用这些功能。

来自:http: //msdn.microsoft.com/en-us/netframework/aa904594.aspx

LINQ to SQL 和 Entity Framework 都有 Linq 提供程序,在查询它们时允许使用这种很棒的语法。

于 2009-05-14T22:28:19.033 回答
0

我在 12 月 2 日和 3 日参加了蒙特利尔的 microsoft TehcDays,他们说他们将在几年内不再支持 LINQ to sql,所以你最好开始学习 LinQ to entity(实体框架)。

于 2009-12-05T18:49:33.250 回答
0

据我了解,EF 还没有完全准备好迎接黄金时间,而且它不支持今天在 LINQ2SQL 中如此容易工作的许多 LINQ 构造。

如果您可以为您的应用程序提交 SQL Server,我今天说,学习 LINQ2SQL。使用 LINQ 时,您将拥有更多的查询功能。

我敢打赌,当 EF 准备好时,这对您来说会更容易过渡,因为查询语言应该是可转移的。

祝你好运。

于 2009-05-15T04:46:08.190 回答
0

实体框架具有 LINQ to Entities,因此您也可以对 EF 执行非常相同的查询。我的回答是对 EF 进行更多投资,因为即将推出的 EFv4 似乎很有希望。

于 2009-05-14T22:25:34.530 回答