Я новичок в Linq и Entity Framework.Мне было поручено изменить параметр метода с IEnumerable на IQueryable.Нет ошибок компилятора, но во время выполнения я получаю «Указанное выражение LINQ содержит ссылки на запросы, связанные с различными контекстами.»
Я искал SO в частности и Google в целом.Ошибка связана, как говорится, с присоединением к различным контекстам.Я не присоединяюсь ни к чему.Соответствующий запрос отлично работает как IEnumerable.
public ActionResult Index()
{
//The query in question. Works as IEnumerable
//Original code:
//IEnumerable<Request> hasTickets = context.Requests.Where(x => x.RequestorID == User);
IQueryable<Request> hasTickets = context.Requests
.Where(x => x.RequestorID == User);
//This is the method being used to scrub the data
//not included here). This method has been changed
//to take a parameter of IQueryable.
hasTickets = SecurityTrimRequests(hasTickets);
int hasTicketCount = 0;
//Errors on this line when query is called. I just need
//a count of the number of tickets a user has in the dB.
hasTicketCount = hasTickets.Count();
if (IsSupplyTeam)
{
return View();
}
else if (hasTicketCount > 0)
{
return View();
}
else
{
return RedirectToAction("Index", "Home");
}
}
Я ожидал получить счетчик количества билетов, назначенных вошедшему в систему пользователю, чтобы использовать их для логики того, какое представление возвращать.
До того, как используемый метод был изменен на IQueryable, код работал нормально.Теперь он имеет ошибки во всем.Приведенный выше код - самый простой пример, который у меня есть.