Даниэль, я попробовал то, что у тебя было, и столкнулся с некоторыми проблемами. Можете ли вы объяснить, что означают эти ошибки?
Я пытался:
// Doesn't work.
using (var edmx = new MayflyEntities())
{
var me = edmx.Users.First(user => user.Email == UserEmail);
var myProjects = edmx.Projects.Where(project => project.Users.Contains(me));
var associatedUsers = myProjects.SelectMany(project => project.Users).Distinct();
}
, но получил два следующих исключения:
Unable to create a constant value of type 'DomainModel.User'. Only primitive types ('such as Int32, String, and Guid') are supported in this context.
и
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
Итак, я переместил некоторые вещи, и это прекрасно работает, но теперь мне интересно, почему? В SQL Profiler все это выполняется в одном запросе, так почему же он показывает, что контекст был удален? Кроме того, почему он не может использовать объект me
вместо лямбды?
// Works fine
var edmx = new MayflyEntities();
var myProjects = edmx.Projects.Where(project => project.Users.Contains(edmx.Users.First(user => user.Email == UserEmail)));
var associatedUsers = myProjects.SelectMany(project => project.Users).Distinct();