я получаю эту ошибку в этом коде (это проект MVC, в который я пытаюсь интегрировать Entity Framework):
List<string> consultantSchoolList = new List<string>();
// districts managed by consultant
IQueryable<string> consultClients = rc.consultantDistrictsRepository.districtsForConsultant(userID);
// schools managed by consultant
if (consultClients != null)
{
consultantSchoolList = (from c in rc.clientsRepository.Clients
where (consultClients.Contains(c.cdsCode.Substring(0, 7)))
select c.cdsCode).ToList();
}
в строке "consultantSchoolList =".
Это проект MVC, и я использую объект контекста, который хранится в объекте HttpContext.Current. Каждый репозиторий имеет закрытую переменную, в которой хранится объект контекста, но каждый из них должен указывать на один и тот же объект в коллекции HttpContext.Current Items. Будет ли это рассматриваться как два разных контекста, даже если они указывают на одно и то же?
Выполнение кода в отладчике показывает, что контекстные объекты для двух репозиториев, consultantDistrictsRepository и clientsRepository, указывают на один и тот же объект в объекте HttpContext.Current.
ОБНОВЛЕНИЕ Вот как я определяю объекты контекста в каждом хранилище:
private SchedulerContext context;
public EFConsultantDistricts()
{
context = ContextHelper.GetContext();
}
и GetContext выглядит следующим образом:
public static SchedulerContext GetContext()
{
if (!HttpContext.Current.Items.Contains("_db_context"))
{
HttpContext.Current.Items.Add("_db_context", new SchedulerContext());
}
return (SchedulerContext)HttpContext.Current.Items["_db_context"];
}