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

Arv*_*ngh 16 .net linq entity-framework linqpad

我能做到

var result =  OAS_Questions.Count (oasq => oasq.Id!=0);
result.Dump();
Run Code Online (Sandbox Code Playgroud)

乃至

var result =  OAS_Questions;
result.Dump();
Run Code Online (Sandbox Code Playgroud)

但是当我试图将"问题"的子对象包含在"Opitons"中时

var result =  OAS_Questions.Include("OAS_QuestionOptions");
result.Dump();
Run Code Online (Sandbox Code Playgroud)

我看到以下错误

'System.Data.Linq.Table'不包含'Include'的定义,也没有扩展方法'Include'接受类型为'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()",它会产生语法错误.

小智 30

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

  1. 打开你的LinqPad查询
  2. 右键单击 - >查询属性
  3. 添加引用 EntityFramework.dll
  4. 通过Additional namespace import标签添加 System.Data.Entity

然后你有intellisense并且可以使用.Include的强类型版本,例如:

var result =  OAS_Questions.Include(q => q.OAS_QuestionOptions);
Run Code Online (Sandbox Code Playgroud)

  • 对于 Entity Framework Core,添加对 Microsoft.EntityFrameworkCore.dll 程序集的引用并添加额外的命名空间 Microsoft.EntityFrameworkCore (7认同)

Rya*_*pat 9

您需要使用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. 指定Server,Log on detailsdatabase,然后单击确定.

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


sca*_*tag 5

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

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