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.Datali >
- 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)