2 回答
TA贡献1802条经验 获得超4个赞
此问题中的代码与建立关系有关。此问题中报告的问题与未自动加载的相关数据有关。这是两件不同的事情,彼此之间几乎没有关系。
您是否在某处错过了包含?您是否访问过(并因此延迟加载) Role nav 属性,但没有访问 Permission nav 属性?我想查看从您启动查询的位置到您检查此对象的位置的代码(根据您的屏幕截图)
您回复了请求的代码:
var user = _userRepository
.FirstOrDefaultAsync(us => us.Email == email);
var userPermissions =
user.UserRoles
.First()
.Role
.RolePermissions
.Select(rp => rp.Permission)
.ToList();
如果您Include()在查询中插入一条语句,您将看到Permission实际上将正确获取该语句。
我不太确定您正在检查哪个对象。屏幕截图告诉我您正在查看 a RolePermission,但发布的代码建议您获取Permission对象列表。
无论如何,您似乎已经使用以下方法修复了它Include:
Mihai Alexandru-Ionut @Flater,是的,我必须使用include,问题就解决了。这是解决方案,因此请将其作为答案发布以接受它。
TA贡献1111条经验 获得超0个赞
IdRole和Permission表都缺少属性。当您说表中的RoleId属性时RolePermission,EF 会在表中查找 Id 属性Role。
像这样更新您的角色和权限表并尝试一下:
public class Role : Entity
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<RolePermission> RolePermissions { get; set; }
}
public class Permission : Entity
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<RolePermission> RolePermissions { get; set; }
}
- 2 回答
- 0 关注
- 200 浏览
添加回答
举报