如何在插入后获取 EntityFramework 中相关表的多级?

How to fetch MULTI-LEVELS of related tables in EntityFramework after an Insert?

我是典型的1-M-1关系;为了简单起见,让我们只处理 3 tables,但我真正的问题更复杂。

UsersTbl --< UserMenusTbl >-- MenusRefTbl

MenusRefTbl 是一个参考 table,它几乎是静态的。为了创建新用户,我将数据加载到 newUser 父实体 (class UsersTbl) 及其子导航 属性 (class UsersMenuTbl ).

那我打电话给

var savedUserEntity = dbCtx.UsersTbl.Add(newUser);
int rowsAffected = dbCtx.SaveChanges();

这会在 Parent 和 Child table(UsersTbl、UserMenusTbl)中插入数据,并在两个 table 中自动生成任何 @@identity primary/foreign 键;实际上,LHS 变量 savedUserEntity 现在已刷新以包含自动生成的身份。 但是,第三个 table (MenusRefTbl) 的导航 属性 仍然为空; 例如,

savedUserEntity.UserMenusTbl.MenusRefTbl = null;

如何将第 3 个 TABLE 数据提取到我的对象 savedUserEntity 中?

我见过一些方法,如 .Reload()、.LoadAsync(),但它们似乎不适用于导航属性(相关 table 的多级),或适用于我的情况。

那么我是否坚持使用新上下文从头开始重新发出新查询?

我使用相同的上下文做了什么:

var savedUserEntity = dbCtx.UsersTbl.Add(newUser);
int rowsAffected = dbCtx.SaveChanges();
rtnUserEntity = dbCtx.UsersTbl
            .Include(um => um.UserMenusTbl.Select(m => m.MenusRefTbl))
            .Where(u => u.userID == savedUserEntity.userID) //identity after Save
            .Single(); //rtn single record