asp.net core EF core 关键多表关联,加载相关数据

实际应用当中,可能有A表包含B表,C表;B表包含B1表,B2表;C表包含C1表,C2表

这样就出现了多个表关联和绑定包含的情况,ef core为我们提供了Include和ThenInclude的子句来实现上述情况。

特别注意多表关联要使用Include的lambda表达式,使用简单的字符串包含不会有ThenInclude子句,如以下会提示错误:

var q = _dbcontext.A.Include(nameof(B)).ThenInclude(b=>b.B1).FirstOrDefault(o => o.Id == id);

正确的写法是:

var q = _dbcontext.A.Include(a=>a.B).ThenInclude(b=>b.B1).FirstOrDefault(o => o.Id == id);

如果要包含B1与B2表:

var q=_dbcontext.A

.Include(a => a.B) .ThenInclude(b =>b.B1)

.Include(a => a.B) .ThenInclude(b => b.B2) .ToList();

所以建议写include子句时最好使用lambda表达式。

参考:https://docs.microsoft.com/zh-cn/ef/core/querying/related-data