Следующий ответ относится к Database-First или Model-First workflow (только два рабочих процесса, которые были доступны в Entity Framework (версия <= 4.0), когда был задан вопрос ). Если вы используете рабочий процесс <strong>Code-First (который доступен с версии EF> = 4.1), перейдите к ответу ssmith на этот вопрос для правильного решения.
<ч />
Файл edmx имеет в определении <ConceptualModel>
и <EntityContainer>
атрибут для отложенной загрузки, где вы можете установить для отложенной загрузки обычно значение false:
<EntityContainer Name="MyEntitiesContext" annotation:LazyLoadingEnabled="false">
Это создает следующий параметр в конструкторе ObjectContext:
public MyEntitiesContext() : base("name=MyEntitiesContext", "MyEntitiesContext")
{
this.ContextOptions.LazyLoadingEnabled = false;
OnContextCreated();
}
Мой пример не подразумевает, что сгенерированный ObjectContext
(или DbContext
в более новых версиях EF) должен редактироваться вручную (который будет перезаписываться при каждом обновлении модели из базы данных, как указал ctorx), но это элемент EntityContainer
в разделе edmx:ConceptualModels
файла EDMX должен быть отредактирован путем добавления атрибута annotation:LazyLoadingEnabled="false"
- либо вручную в редакторе XML, либо на странице свойств поверхности конструктора, где также доступна эта опция, справа -Нажмите EDMX, затем Свойства.
Эта модификация файла EDMX автоматически сгенерирует класс контекста с отключенной опцией отложенной загрузки в конструкторе, как показано выше. Само изменение файла EDMX не перезаписывается при обновлении модели из базы данных.