我不确定为什么会收到错误消息:“必须是可还原节点”
这是我的查询。我正在使用EF Core 2.2运行Core 2(因此我应该拥有以前版本中的修复程序)
IQueryable<Gizmo> gizmos = _context.Gizmo;
IQueryable<GizmoViewModel> dataReferences = (
gizmos.SelectMany(j => j.DataReferences.Select(r =>
new GizmoViewModel()
{
GizmoId = j.Id,
DataId = r.DataId
}
))
);
答案 0 :(得分:3)
(不幸的是)您遇到了当前的EF Core查询翻译错误之一。
这似乎是由于访问内部SelectMany
表达式内部的外部Select
lambda参数引起的。
解决方法是使用另一个SelectMany
重载,该重载具有第二个具有外部和内部参数的lambda(我猜这是C#编译器在转换LINQ查询语法时使用的):
IQueryable<GizmoViewModel> dataReferences = (
gizmos.SelectMany(j => j.DataReferences, (j, r) =>
new GizmoViewModel()
{
GizmoId = j.Id,
DataId = r.DataId
}
)
);
答案 1 :(得分:0)
尝试包括DataReferences吗?
您的代码已修改:
IQueryable<GizmoViewModel> dataReferences = (
gizmos.SelectMany(j => j.DataReferences.Select(r =>
new GizmoViewModel()
{
GizmoId = j.Id,
DataId = r.DataId
}
))
.Include(m => m.DataReferences)