【发布时间】:2020-11-05 09:52:52
【问题描述】:
提前感谢您的帮助。 无论如何都不是 Linq to Sql 的专家。 我有 4 张桌子。
主 lb_item 表毫无疑问地定义了一个项目。 许多字段,但包含 3 个 ID 字段。 itemID(键) 类别ID(非空) patternID(可以为空)
lb_pattern 表,它以 lb_item 模式 ID 为键。
lb_category 表以 lb_item categoryID 为键。
lb_animal 表,它以 lb_item 项目 ID 为键。
所以我需要从 lb_item 表中选择一个连接到这 3 个表的选择,以在我构建 DTO 时带回 varchar 字段。
单个左外连接可以正常工作:
from lbi in lbContext.lb_item
join lbp in lbContext.lb_pattern on lbi.patternID equals lbp.patternID into g1
from j1 in g1.DefaultIfEmpty()
join lbc in lbContext.lb_category on lbi.categoryID equals lbc.categoryID
where lbi.itemID == id
select new lb_itemDTO..........
我现在需要为 lb_animal 表添加第二个左外连接。 于是我开始这样做:
from lbi in lbContext.lb_item
join lbp in lbContext.lb_pattern on lbi.patternID equals lbp.patternID into g1
from j1 in g1.DefaultIfEmpty()
join lba in lbContext.lb_animal on j1.
但是 VS 中 j1 的选项只给了我 lb_pattern 表中的字段。 我需要加入才能阅读:
join lba in lbContext.lb_animal on j1.itemID equals lba.itemID
或
join lba in lbContext.lb_animal on lbi.itemID equals lba.itemID
这两种方法都不起作用,并给我一个异常,类似于“'NavigationExpandingExpressionVisitor' failed。这可能表明 EF Core 中存在错误或限制”。
那么如何向 lb_animal 表添加左外连接?
我花了最后一个小时查看各种 SO 帖子以解决问题,但由于某种原因,我似乎无法理解解决方案。感觉像个新手。而且我相信解决方案会很明显!
任何帮助或解决方案的指针将不胜感激。
【问题讨论】:
标签: c# entity-framework model-view-controller linq-to-sql