Я пытаюсь создать универсальный метод Get для Entity Framework с динамическими Where
и Include
. Я использую приведенный ниже код, однако при попытке получить доступ к свойству навигации, которое было в списке «Включить», я получаю сообщение об ошибке закрытия контекста объекта
Разве .Include()
не должен загружать эти объекты, поэтому мне не нужно держать ObjectContext открытым?
public static List<T> GetList<T>(Func<T, bool> where, string[] includes)
where T : EntityObject
{
using (var context = new TContext())
{
ObjectQuery<T> q = context.CreateObjectSet<T>();
foreach (string navProperty in includes)
{
q.Include(navProperty);
}
return q.Where<T>(where).ToList();
}
}
Код, вызывающий ошибку:
var x = DAL<MyContext>.GetList<MyEntity>(
p => p.Id == 1
, new string[]{ "Type" } );
var y = x.Type; // Throws an error that context has been closed
Мне кажется, что я здесь совершаю какую-то глупую ошибку, потому что я новичок в EF и все еще пытаюсь это выяснить.