EF core join

该代码段展示了如何通过LINQ查询在数据库中联合查询用户、角色及用户站点与角色菜单的关系,以验证用户名、密码,并确保用户拥有对应的角色权限和站点权限。查询结果将转换为用户DTO,包含用户基本信息、角色信息、菜单ID列表和站点ID列表。
摘要由CSDN通过智能技术生成

var data = _dbContext.Users.Join(_dbContext.Roles, u => u.RoleId, r => r.Id, (u, r) => new {u, r})
                .Where(t => t.u.UserName == username && t.u.PassWord == password)
                .Where(t => t.u.UserSite.All(x => x.UserId == t.u.Id))
                .Where(t => t.r.RoleMenus.All(x => x.RoleId == t.r.Id))
                .Select(t => new UserDto()
                {
                    Id = t.u.Id,
                    UserName = t.u.UserName,
                    PassWord = t.u.PassWord,
                    RealName = t.u.RealName,
                    Phone = t.u.Phone,
                    RoleId = t.u.RoleId,
                    RoleName = t.r.RoleName,
                    LastIp = t.u.LastIp,
                    LastTime = t.u.LastTime,
                    Menus = t.r.RoleMenus.Select(x => (int) x.MenuId).ToList(),
                    Sites = t.u.UserSite.Select(x => x.SiteId).ToList()
                });
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值