У меня проблема с запросом Linq-To-Entities о отложенном выполнении, которое я пытаюсь понять.Вот код:
public QuestaoSimulado GetByID(int idQuestao)
{
var query = (from questao in ctx.tblQuestoes
where questao.intQuestaoID == idQuestao
select new QuestaoSimulado()
{
Enunciado = questao.txtEnunciado,
Comentario = questao.txtComentario,
Id = questao.intQuestaoID,
Ano = questao.intYear ?? 0,
Tipo = questao.bitCasoClinico == "1" ? (int)Questao.tipoQuestao.DISCURSIVA : (int)Questao.tipoQuestao.OBJETIVA,
Video = ctx.tblVideo_Questao_Simulado.Any(v => v.intQuestaoID == questao.intQuestaoID)
}).FirstOrDefault();
return query;
}
Этот конкретный запрос вызывает это исключение:
NotSupportedException: невозможно создать постоянное значение типа "tblVideo_Questao_Simulado".В этом контексте поддерживаются только примитивные типы или типы перечисления.
И я понимаю, что это происходит потому, что метод Any()
в подзапросе не откладывается и выполняется мгновенно в базе данных (пожалуйста, исправьтеменя, если я ошибаюсь).
Теперь проблема: этот запрос не работает на моей машине из-за этого, но тот же код работает на машине коллеги.Кроме того, он не работает в нашей среде тестирования, но работает на производстве.Я пытаюсь найти информацию, чтобы понять, почему она работает в одной среде, а не в другой.Возможно, это происходит потому, что версия фреймворка отличается или что-то еще (я использую .Net Framework 4.7.1), но мне все равно не удалось найти что-нибудь полезное для понимания этого сценария
Любой светоб этой ситуации действительно ценят.
Спасибо!
РЕДАКТИРОВАТЬ:
Тестирование в наших средах, разница в том, что dll, который работаетсоздается в Visual Studio 2012, но тот же код вызывает это исключение в Visual Studio 2017. Я ищу информацию о различиях в компиляции из обеих версий.Если у кого-то есть идеи, было бы здорово!