添加引用后,甚至找不到LinqPad Linq Include()扩展方法

时间:2013-02-23 10:32:15

标签: .net entity-framework linq linqpad

我能够做到

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

甚至

var result =  OAS_Questions;
result.Dump();

但是当我尝试将“问题”的子对象包含在“Opitons”中时,通过

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

我出现以下错误

  

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

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

  1. System.Code
  2. System.Data
  3. System.Data.Entity的
  4. 将System.Data.Linq
  5. System.Linq.Expressions
  6. System.Data.DataSetExtensions
  7. 但是在编写查询时仍然无法使用扩展方法“Include()”,它会产生语法错误。

3 个答案:

答案 0 :(得分:25)

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

  1. 打开您的LinqPad查询
  2. 右键单击 - >查询属性
  3. 添加对EntityFramework.dll
  4. 的引用
  5. 通过Additional namespace import标签添加System.Data.Entity
  6. 然后你有intellisense并且可以使用.Include的强类型版本,例如:

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

答案 1 :(得分:8)

您需要在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及更高版本),然后单击下一步
  4. 点击右上角的Browse,然后导航至然后选择您的EF项目组件。
  5. 选择实体数据模型,然后点击确定
  6. 指定ServerLog on detailsdatabase,然后点击确定
  7. 您现在应该能够在LinqPad中使用.Include语句。

答案 2 :(得分:3)

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

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