Я только изучаю Entity Framework и добился хорошего прогресса в его включении в свою многоуровневую структуру кода. У меня есть 2 визуальных слоя, бизнес-уровень и уровень доступа к данным.
Моя проблема заключается в передаче объекта объекта между слоями. Этот пример кода не работает:
// BLL
public static void Test1()
{
List<User> users = (from u in GetActiveUsers()
where u.ID == 1
select u).ToList<User>();
// Do something with users
}
// DAL
public static IQueryable<User> GetActiveUsers()
{
using (var context = new CSEntities())
{
return from u in context.Users
where u.Employee.FirstName == "Tom"
select u;
}
}
Я получаю сообщение об ошибке Экземпляр ObjectContext удален и больше не может использоваться для операций, требующих подключения.
Если я удаляю using из метода GetActiveUsers, он работает нормально.
Я знаю, что это опасная практика, поскольку GC может в любой момент избавиться от контекста и испортить мой BLL.
Итак, как правильно передавать информацию между слоями? Нужно ли мне также передавать контекст?