所以,这就是我的模型.. 又好又复杂。
我正在寻找通过用户 ID 获取区域。如果我在 SQL 中执行此操作,我会一直执行一系列连接到用户表。您将如何在 LINQ 查询语法或方法链接中执行此操作?
反过来,我可以很直接地做到这一点,但是我必须做很多额外的工作才能使结果图变平,而且还需要拉回中间的所有实体。
如果我可以选择包括 AreasPermissions 和 Permissions,那将是 gravy .. 但在这一点上,我不介意额外的查询来获取这些。
我浮动的另一个选项是使用函数导入到 sproc 并将其映射到 Area .. 但是当我开始需要包含其他实体时,它会使该选项不那么优雅。我也试图避免使用 sprocs只是为了使用 sprocs,因为它总是与人们一起滑坡..“将 sproc 用于一件事”往往会变成“不要将 EF(表访问)用于任何事情”。
var userByID = new Func<User, bool>(x => x.UserId.Equals(userID, StringComparison.InvariantCultureIgnoreCase));
var user = this._context.Users
.Include("TeamsUsers.Team.TeamsRoles.Role.RolesAreasPermissions.AreaPermission.Area")
.Include("TeamsUsers.Team.TeamsRoles.Role.RolesAreasPermissions.AreaPermission.Permission")
.Single(userByID);