[英]complex EF graph linq join
所以,那就是我的模型..漂亮而复杂。
我想通过UserID获取区域。 如果我在SQL中执行此操作,我会在Users表中一直进行一些连接。 您将如何在LINQ查询语法或方法链中执行此操作?
从其他方面来说,我可以非常简单地做到这一点,但是我必须做很多额外的工作来平整生成的图形,并且还需要拉回其间的所有实体。
如果我可以选择包括AreasPermissions和Permissions,那将是很好的..但是在这一点上我不介意另外一个查询来获取它们。
我浮动的另一个选项是使用函数导入到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);
我无法测试这个,但我认为它应该工作:
var result =
from user in _context.Users
where user.Id == userId
from teamUser in user.TeamUsers
from teamRole in teamUser.Team.TeamRoles
from roleAreaPermission in teamRole.Role.RoleAreaPermissions
select roleAreaPermission.AreaPermission.Area;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.