2013-02-23 26 views
12

我能够做LinqPad LINQ的包括()扩展方法不加入引用

var result = OAS_Questions.Count (oasq => oasq.Id!=0); 
result.Dump(); 

甚至

var result = OAS_Questions; 
result.Dump(); 

但是之后竟然发现当我尝试包括“问题”的子对象通过

var result = OAS_Questions.Include("OAS_QuestionOptions"); 
result.Dump(); 

说 “Opitons” 我出下面的错误

“System.Data.Linq.Table”不包含 为“包含”的定义和没有扩展方法“包含”接受 类型 “System.Data.Linq.Table”的第一个参数可以是找到 (按F4添加使用指令或程序集引用)

我已经尝试添加对下面程序集引用的引用。

  1. System.Code
  2. System.Data
  3. System.Data.Entity的
  4. 将System.Data.Linq
  5. System.Linq.Expressions
  6. System.Data.DataSetExtensions

但是仍然扩展方法“Include()”在编写查询时不可用,并且它提供了一个语法er ROR。

回答

3

默认情况下Linqpad使用Linq2Sql DataContext,它不会让你做一个包含。

要获得包括扩展方法,从项目组件(EF4.x/EF5)

+0

在这里看到的如何添加参考类型的DataContext的解释:http://stackoverflow.com/ a/24456720/1943 – 2014-10-20 17:25:46

6

您需要从您的EntityFramework项目的DLL使用类型的DataContext(ObjectContextDbContext)使用类型的DataContext。您可以通过执行以下步骤执行此操作:

  1. 点击添加连接链接在应用程序的左上角。
  2. Choose Data Context向导中,选择Use a typed data context from your own assembly选项。
  3. 单击适合您的解决方案的LINQPad驱动程序选项(LINQ to SQL,EF 4.0及更低版本或EF 4.1及更高版本),然后单击Next
  4. 点击右上角的Browse,然后导航至选择您的EF项目组件。
  5. 选择实体数据模型,然后单击确定
  6. 指定Server,Log on detailsdatabase,然后点击确定

您现在应该可以在LinqPad中使用.Include语句。

22

如果您是通过使用LinqPad EF则更好的方法是使用的.Includehttp://msdn.microsoft.com/en-us/library/gg671236%28VS.103%29.aspx)的强类型版本如下:

  1. 打开LinqPad查询
  2. 右击 - >查询性能
  3. 通过其他的命名空间进口标签
  4. 添加参考EntityFramework.dll
  5. 添加System.Data.Entity

你再有智能感知,并且可以使用.INCLUDE的强类型版本,例如:

var result = OAS_Questions.Include(q => q.OAS_QuestionOptions); 
+0

对于Entity Framework Core,添加对Microsoft.EntityFrameworkCore.dll程序集的引用并添加额外的名称空间Microsoft.EntityFrameworkCore – 2017-09-01 15:19:25