2016-05-27 2 views
1

Мы используем Include в нескольких наших запросах LINQ. Однако было интересно, что перегрузка метода include включает только (путь строки) в качестве параметра, что, если мы изменим имя таблицы базы данных и регенерируем сущности, то включительная часть будет вызывать ошибки времени выполнения. Как поймать такие проблемы во время компиляции?Entity Framework Включить синтаксис

Пример:

Material has BusinessUnit. 
So we use repo.Material.Include("BusinessUnit") 

, что если мы изменим BusinessUnit имя единицы для организационного подразделения или что-то другое.

+1

Эта функция уже существует в Entity Framework 4.1+. См. Ссылку [здесь] (http://stackoverflow.com/a/10843340/1504480) –

ответ

0

Использование Strong Тип здесь

repo.Material.Include(m => m.BusinessUnit) 
+0

Я использую сущность framework 6.0, так или иначе я не получаю эту перегрузку. Я что-то упустил? Если я нажму F12 на include, я просто вижу публичный виртуальный DbQuery Include (строка); Мне нужно написать перегруз себя? –

+0

это доступно из ef 4.1. Не знаете, почему вы не получаете вариант. пожалуйста, поделитесь своей сущностью –

2

Использование, как показано ниже, чтобы избежать использования string в Include методом

Добавьте следующую ссылку в файл

using System.Data.Entity ; 

И использовать

Context.BusinessUnits.Load(); 

Или

Context.Materials.Include(m => m.BusinessUnit).Where(...) 
0

Для того, чтобы использовать для перегрузки Include, которая использует лямбда-выражения, то вам необходимо добавить using System.Data.Entity; имен. Перегрузка содержится в этом пространстве имен. Тогда вы могли бы использовать

repo.Material.Include(m => m.BusinessUnit)

Вы должны использовать Entity Framework 4.1 или более поздней версии, чтобы использовать использовать эту функциональность

Смежные вопросы