ВопросОтключить Ленивые-Load Entity Framework Navigation Свойства
Есть ли способ сделать это так, что объект возвращается из запроса DbContext возвращает нуль (или какое-либо другое конкретное значение) при попытке получить доступ к навигации свойство, которое вы не указали конкретно .Include()? Например:
var parents = dbContext.People.Where(p => p.Children.Any()).Include("Children").ToList();
//Assert all parents have children...
Assert.IsTrue(parents[0].Children.Any());
И ...
var parents = dbContext.People.Where(p => p.Children.Any()).ToList();
//Assert all children collections are null... NOT LAZY LOADED
Assert.IsTrue(parents[0].Children == null);
Чтобы было ясно, я не хочу, свойство быть Страстно-Loaded. Я не хочу, чтобы он был загружен вообще. Я попытался отделить объект от контекста, но это не помогает.
фон
Поэтому я пытаюсь сделать это, потому что мне нужно получить доступ к объекту сущности на diffrent нити, чем та DbContext была создана. Из-за этого я НЕ хочу, чтобы свойство навигации было настроено на какое-то заявление об отсроченном выводе excq. Проблема в том, что, поскольку я не могу получить доступ к DbContext, чтобы проверить, загружено ли свойство навигации или нет (из-за того, что он не является потокобезопасным), я не знаю, нужно ли мне создавать новый DbContext для текущего потока, чтобы получить отсутствующий данные. Это та же самая проблема, которую я пытался решить с How to tell if a Navigation Property is loaded without DbContext
Update
Установка свойства Configuration.LazyLoadingEnabled в DbContext к ложным предотвращает попадание LINQ автоматической проводкой, но для навигации свойства, коллекции это приводит к пустой коллекции, а не к нулю.
Чтобы решить проблему на основе коллекции, я изменил свой шаблон T4, чтобы сгенерировать пустой конструктор по умолчанию, а не тот, который устанавливает каждый ICollection равным пустой HashSet.
попробовать .AsNoTracking(). – DevilSuichiro
AsNoTracking() не позволяет контексту кэшировать объект, но доступ к свойству навигации по-прежнему вызывает попытку запросить контекст, из которого он был создан. – NuclearProgrammer