LinqPad Linq Include() метод расширения не найден даже после добавления ссылок

Я могу сделать

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' не содержит определение "Include" и метод расширения "Include" первый аргумент типа "System.Data.Linq.Table" можно найти (нажмите F4, чтобы добавить ссылку на использование или ссылку на сборку)

Я уже пытался добавить ссылки на приведенные ниже ссылки на сборку.

  • System.Code
  • System.Data​​li >
  • System.Data.Entity
  • System.Data.Linq
  • System.Linq.Expressions
  • System.Data.DataSetExtensions

Однако метод добавления "Include()" не доступен при составлении запроса и дает синтаксическую ошибку.

Ответ 1

Если вы используете EF через LinqPad, лучшим способом является использование строго типизированной версии .Include (http://msdn.microsoft.com/en-us/library/gg671236%28VS.103%29.aspx) следующим образом:

  • откройте запрос LinqPad
  • щелкните правой кнопкой мыши → свойства запроса
  • Добавить ссылку на EntityFramework.dll
  • с помощью вкладки импорта дополнительных пространств имен System.Data.Entity

у вас есть intellisense и вы можете использовать строго типизированную версию .Include, например:

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

Ответ 2

Вам нужно использовать типизированный DataContext (ObjectContext или DbContext) из DLL проекта EntityFramework. Вы можете сделать это, выполнив следующие шаги:

  • Нажмите ссылку Добавить соединение в верхнем левом углу приложения.
  • В мастере Choose Data Context выберите опцию Use a typed data context from your own assembly.
  • Выберите опцию драйвера LINQPad, подходящую для вашего решения (LINQ to SQL, EF 4.0 и ниже или EF 4.1 и выше), затем нажмите Далее.
  • Нажмите Browse в правом верхнем углу и выберите, затем выберите проект проекта EF.
  • Выберите модель данных сущности, затем нажмите ОК.
  • Укажите Server, Log on details и database, затем нажмите ОК.

Теперь вы можете использовать оператор .Include в LinqPad.

Ответ 3

По умолчанию Linqpad использует Linq2Sql DataContext, который не позволяет вам включать include.

Чтобы получить метод расширения include, используйте Typed DataContext из вашей сборки проекта (EF4.x/EF5)