Учитывая этот пример псевдокода:
var student = from s in ctx.Students
where s.StudentName == "Bill"
let code = GetCode(s.Id)
select new
{
Name = s.StudentName,
Code = code.Code
};
private Code GetCode(int id)
{
return ctx.Codes.FirstOrDefault(x => x.Id == id);
}
Я получаю это сообщение об ошибке:
"Вторая операция началась в этом контексте до завершения предыдущей операции. Обычно это вызвано разными потоками, использующими один и тот же экземпляр DbContext, однако не гарантируется, что члены экземпляра будут потокобезопасными. Это также может быть вызвано вложенным запросом, оцениваемым на клиенте, если это так, перепишите запрос, избегая вложенных вызовов ".
Но если я явно напишу запрос в предложении let, он будет работать нормально:
var student = from s in ctx.Students
where s.StudentName == "Bill"
let ctx.Codes.FirstOrDefault(x => x.Id == s.Id)
select new
{
Name = s.StudentName,
Code = code.Code
};
Есть ли способ вызвать метод GetCode, не получая никаких ошибок?