2009-06-02 42 views
3

我已经使用LINQ到更多的项目近日成功SQL,但我热衷于移动到LINQ到实体,因为这看起来像是面积将在微软转向.NET 4.0及更高版本时获得更多投资。事情要知道从LINQ迁移到SQL时 - > LINQ到实体

在做之前,所以我很希望找出事情的LINQ to SQL有从LINQ缺少实体。我的初步调查揭开了一些小小的烦恼。

  • LINQ到实体不支持Single()SingleOrDefault()
  • LINQ到实体不会允许你检查在VS2008 IDE生成的SQL的非执行查询

有谁知道还有其他的差异吗?

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

+0

I *以为*这是一个DUP,但我不敢肯定 - 最明显的其他线程(http://stackoverflow.com/questions/8676)不包括细微的差别 - 只是大满贯... – 2009-06-02 10:15:42

回答

3

随着EF,你可以得到,如果你投的查询的ObjectQuery然后检查ToTraceString功能将生成的SQL。当然,这并不像LINQ to SQL的实现那么简单。另外,EF没有像LINQ to SQL中的Context.Log这样的良好的日志截取选项。

我做的LINQ的一些介绍,以SQL - > EF迁移与VS直播下周开始,不久将在thinqlinq.com开始就可以了博客系列。

吉姆

2
  • 首先/接/等;在EF中,它要求(IIRC)一个命令; LINQ-to-SQL将接受这些无序查询
  • 子表达式评估;如果您使用Expression.Invoke自定义Expression(例如,谓词),它将不起作用; EF不支持子表达式使用(LINQ-to-SQL)
  • 序列化;非常非常不同
  • 加载关联;需要明确的负载在EF
  • UDF支持(在数据库组合的)