从LINQ迁移到SQL时需要注意的事项 - > LINQ to Entities

时间:2009-06-02 10:09:11

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

我最近在许多项目上成功使用过LINQ to SQL,但我很想转向LINQ to Entities,因为这看起来像是在微软迁移到.NET 4.0及更高版本时将获得更多投资的领域。

在这样做之前,我很想知道LINQ to SQL中缺少LINQ to SQL的内容。我的初步调查揭示了一些小麻烦。

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

是否有人知道其他任何此类差异?

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

2 个答案:

答案 0 :(得分:3)

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

我正在做一些关于LINQ to SQL的演示 - > EF迁移将于下周开始使用VS Live,并将很快在thinqlinq.com上发布一系列博客。

吉姆

答案 1 :(得分:2)

  • 首先/接/等;在EF中,它要求(IIRC)下订单; LINQ-to-SQL将接受这些用于无序查询
  • 子表达评估;如果您使用Expression滚动了自定义Expression.Invoke(例如,谓词),则无效; EF不支持使用子表达式(LINQ-to-SQL)
  • 序列化;非常非常不同
  • 关联加载;需要在EF
  • 中显式加载
  • UDF支持(可在数据库中组合)