Структура сущностей 4: Почему загружаются связанные узлы, даже если нет оператора Включить? - PullRequest
1 голос
/ 29 февраля 2012

Я использую Entity Framework 4. У меня есть 2 объекта: объект процесса и объект ProcessDescription. Между процессом и описанием процесса существует однозначная связь (у процесса всегда есть описание процесса)

Я делаю следующее:

using (EFEntities ef = new EFEntities(ConnectionString.EFConnString))
        {                                
            var source = ef.Process;
            List<BusinessLayer.Process> processList = source.ToList();
        }

После оператора ToList, если я проверяю processList в отладчике, я вижу, что объект ProcessDescription доступен для каждого процесса, и мне интересно, почему. Я думал, что мне нужно написать .Include ("ProcessDescription"), чтобы включить их. Это автоматически загружается, потому что это взаимно-однозначная ассоциация?

Обновление: EnableLazyLoading действительно имеет значение true. Мой вопрос: если это свойство установлено в true, я думал, что связанные объекты будут загружены, но только при необходимости. Чтобы проверить, загружен ли он, мы можем использовать флаг IsLoaded на связанных объектах. Однако в моем случае в объекте ProcessDescription отсутствует свойство IsLoaded. Означает ли это, что когда я выполняю ToList (), происходит внутреннее соединение, которое выполняется автоматически, опять же, потому что это отношение один к одному?

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Отключите отложенную загрузку, и вы увидите нулевые значения в отладчике.

context.ContextOptions.LazyLoadingEnabled = false;

http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.contextoptions.aspx

(при условии, что база данных сначала с ObjectContext)

0 голосов
/ 29 февраля 2012

В отношениях между сущностями, структура сущностей автоматически загружает все связанные сущности. Вы можете отключить его, установив ef.ContextOptions.LazyLoading = false внутри, используя оператор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...