24

我能做到

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();

我看到以下错误

“System.Data.Linq.Table”不包含“Include”的定义,并且找不到接受“System.Data.Linq.Table”类型的第一个参数的扩展方法“Include”(按 F4 添加使用指令或程序集参考)

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

  1. 系统代码
  2. 系统数据
  3. 系统.数据.实体
  4. System.Data.Linq
  5. System.Linq.Expressions
  6. System.Data.DataSetExtensions

但是在编写查询时扩展方法“Include()”仍然不可用,并且它给出了语法错误。

4

3 回答 3

37

如果您通过 LinqPad 使用 EF,那么更好的方法是使用.Include( http://msdn.microsoft.com/en-us/library/gg671236%28VS.103%29.aspx ) 的强类型版本,如下所示:

  1. 打开你的 LinqPad 查询
  2. 右键单击-> 查询属性
  3. 添加引用EntityFramework.dll
  4. 通过附加命名空间导入选项卡添加System.Data.Entity

然后你就有了智能感知并且可以使用.Include的强类型版本,例如:

var result =  OAS_Questions.Include(q => q.OAS_QuestionOptions);
于 2014-07-25T08:27:39.553 回答
11

您需要使用 EntityFramework 项目的 DLL 中的 Typed DataContext (ObjectContextDbContext)。您可以通过执行以下步骤来做到这一点:

  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. 选择实体数据模型,然后单击OK
  6. 指定和Server,然后单击确定Log on detailsdatabase

您现在应该能够.Include在 LinqPad 中使用该语句。

于 2014-06-27T16:31:54.767 回答
4

默认情况下,Linqpad 使用 Linq2Sql DataContext,它不允许您进行包含。

要获取包含扩展方法,请使用项目程序集 (EF4.x /EF5) 中的 Typed DataContext

于 2013-02-23T10:36:41.907 回答