Это работает:Странное поведение INCLUDE в Entity Framework
using (var dbContext = new SmartDataContext())
{
dbContext.Configuration.ProxyCreationEnabled = false;
var query = dbContext.EntityMasters.OfType<Person>();
if (includeAddress)
query.Include(p => p.Addresses);
if (includeFiles)
query.Include(p => p.FileMasters);
output.Entity = query.Include(s=>s.Addresses).FirstOrDefault<Person>(e => e.EntityId == id);
}
в то время как это не делает:
using (var dbContext = new SmartDataContext())
{
dbContext.Configuration.ProxyCreationEnabled = false;
var query = dbContext.EntityMasters.OfType<Person>();
if (includeAddress)
query.Include(p => p.Addresses);
if (includeFiles)
query.Include(p => p.FileMasters);
output.Entity = query.FirstOrDefault<Person>(e => e.EntityId == id);
}
Я пытаюсь включить адреса, файлы на основе логических флагов, поступающих из функции. Однако, похоже, EF не включает их при использовании условия IF.
Это связано с моим вопросом previous, который фактически работал с использованием Include.
** Эмпирическое правило: ** Если вы хотите сказать «Редактировать», чтобы поместить в редактирования, то вам не нужно редактирование. –