Поскольку вы возвращаете IQueryable из своего DAL, вы не можете использовать , используя оператор .
Запрос отложен до тех пор, пока не будет запущен запрос - .ToList в вашем BLL.
К этому времени контекст будет удален.
Подумайте тщательно об использовании IQueryable, поскольку это рискованная практика, не зная всех деталей.
Поскольку вы все еще изучаете EF, я бы сказал, что все просто:
// BLL
public static void Test1()
{
List<User> users = GetActiveUsers();
var singleUser = users.SingleOrDefault(u => u.ID == 1);
// Do something with users
}
// DAL
public static ICollection<User> GetActiveUsers()
{
using (var context = new CSEntities())
{
var users = from u in context.Users
where u.Employee.FirstName == "Tom"
select u;
return users.ToList();
}
}
Если вы хотите получить одного пользователя, создайте другой метод:
// DAL
public static User GetSingleActiveUser(int userId)
{
using (var context = new CSEntities())
{
var users = from u in context.Users
where u.Employee.UserId == userId
select u;
return users.SingleOrDefault();
}
}