【问题标题】:Things to be aware of when moving from LINQ to SQL --> LINQ to Entities从 LINQ 迁移到 SQL 时要注意的事项 --> LINQ to Entities
【发布时间】:2009-06-02 21:02:06
【问题描述】:

我最近在多个项目中成功使用了 LINQ to SQL,但我热衷于迁移到 LINQ to Entities,因为随着微软迁移到 .NET 4.0 及更高版本,这看起来将获得来自 Microsoft 的更多投资。

在这样做之前,我很想知道 LINQ to SQL 有哪些东西是 LINQ to Entities 所缺少的。我的初步调查发现了一些小问题。

  • LINQ to Entities 不支持Single()SingleOrDefault()
  • LINQ to Entities 不允许您检查 VS2008 IDE 中生成的 SQL 是否存在未执行的查询

有谁知道其他类似的差异吗?

请注意,我不是在寻找 LINQ to SQL 和 LINQ to Entities 的主要功能的并排比较。我希望了解人们遇到的更细微的差异。

【问题讨论】:

  • 认为这是一个骗局,但我不太确定 - 最明显的其他线程 (stackoverflow.com/questions/8676) 并没有涵盖细微的差异 - 只是专业...
  • @Marc - 没错。有大量文章涵盖了这两种技术的营销策略。我希望找出您在项目中通常不会遇到的细微差别,直到为时已晚,无法轻松地在技术之间切换。

标签: .net linq-to-sql linq-to-entities


【解决方案1】:

使用 EF,如果将查询强制转换为 ObjectQuery,然后检查 ToTraceString 函数,您可以获得将生成的 SQL。当然,这并不像 LINQ to SQL 的实现那么简单。此外,EF 没有像 LINQ to SQL 中的 Context.Log 这样好的日志拦截选项。

我正在做一些关于 LINQ to SQL -> EF 迁移的演讲,下周从 VS Live 开始,并将很快在 Thinqlinq.com 上开始一个关于它的博客系列。

吉姆

【讨论】:

    【解决方案2】:
    • 先/取/等;在 EF 中,它需要 (IIRC) 一个命令; LINQ-to-SQL 将接受这些用于无序查询
    • 子表达式求值;如果您使用Expression.Invoke 滚动了自定义Expression(例如谓词),它将不起作用; EF 不支持子表达式的使用(LINQ-to-SQL 支持)
    • 序列化;非常非常不同
    • 关联加载;需要在 EF 中显式加载
    • UDF 支持(可在数据库中组合)

    【讨论】:

      猜你喜欢
      • 2011-11-29
      • 2023-04-06
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      相关资源
      最近更新 更多