【发布时间】:2018-07-27 19:00:55
【问题描述】:
我收到以下错误:
“EntityFramework.SqlServer.dll 中发生'System.NotSupportedException' 类型的未处理异常
附加信息:无法创建“Datos.Especialidad”类型的常量值。此上下文仅支持原始类型或枚举类型。”
尝试更正以下代码时:
IQueryable<Medico> listaMedicos =
from unMedico in context.Medico
select unMedico;
if (medico.Especialidad.Count > 0)
{
listaMedicos = FiltrarPor(listaMedicos,
x => x.Especialidad.Any(e => e.ID == (medico.Especialidad.FirstOrDefault().ID)));
}
return listaMedicos.ToList();
“Medico”和“Especialidad”之间的关系是多对多的关系如下
【问题讨论】:
-
FiltrarPor到底在做什么?您可能只需要在变量中捕获medico.Especialidad.FirstOrDefault().ID并在您的 lambda 中使用它。 -
这是“FiltrarPor”签名 IQueryable
query,Expression > filter = null) 并执行:query = query.Where(filter); -
您应该将该代码添加到问题中。
-
@RufusL 这被用于
Where,所以他们确实想要Any。 -
试试
var id = medico.Especialidad.FirstOrDefault().ID;然后listaMedicos = FiltrarPor(listaMedicos, x => x.Especialidad.Any(e => e.ID == id));
标签: c# entity-framework linq