Отключите ленивую загрузку по умолчанию в Платформе Объекта 4

Кажется, что ленивая загрузка включена по умолчанию в EF4. По крайней мере, в моем проекте, я вижу что значение

dataContext.ContextOptions.LazyLoadingEnabled

верно по умолчанию. Я не хочу ленивую загрузку, и я не хочу должным быть писать:

dataContext.ContextOptions.LazyLoadingEnabled = false;

каждый раз я получаю новый контекст. Так есть ли способ выключить его по умолчанию, скажем, через целый проект?

60
задан Craig Stuntz 4 June 2010 в 12:19
поделиться

1 ответ

Следующий ответ относится к рабочему процессу Database-First или Model-First (единственные два рабочих процесса, которые были доступны с Entity Framework (версия <= 4.0) когда был задан вопрос). Если вы используете рабочий процесс Code-First (который доступен с версии EF> = 4.1), перейдите к ответу ssmith на этот вопрос для правильного решения.


Файл edmx имеет в определении и атрибут для отложенной загрузки, где вы можете установить для ленивой загрузки значение 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 следует редактировать, добавляя аннотацию : LazyLoadingEnabled = "false" атрибут - вручную в редакторе XML или на странице свойств в области конструктора, где также доступен этот параметр, щелкните правой кнопкой мыши EDMX, затем выберите Свойства.

enter image description here

Эта модификация файла EDMX автоматически сгенерирует класс контекста с отключенной опцией отложенной загрузки в конструкторе, как показано выше. Сама модификация файла EDMX не перезаписывается при обновлении модели из базы данных.

67
ответ дан 24 November 2019 в 17:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: