我正在使用EF6开发ASP.NET MVC5项目。我有3个模型:用户,角色和权限。
用户和角色之间的关系是多对多的。角色和权限之间的关系是多对多的。
LazyLoadingEnabled被禁止在数据库环境。
public class Permission
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
public class Role
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Permission> Permissions { get; set; }
public virtual ICollection<User> Users { get; set; }
}
public class User
{
public int ID { get; set; }
public string Username { get; set; }
public string DisplayName { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
public class TaskManagerDB : DbContext
{
public TaskManagerDB() : base()
{
Configuration.LazyLoadingEnabled = false;
}
public DbSet<Role> Roles { get; set; }
public DbSet<Permission> Permissions { get; set; }
public DbSet<User> Users { get; set; }
}
在较早的时候,我获取了一个给定的用户:
User user = db.Users.Find(1);
现在:由于我已经有了模型,如何加载具有用户权限的用户角色?
我试过了:
db.Entry(user).Collection(x => x.Roles).Query().Include(y => y.Permissions).Load();
但这不起作用-user.Roles仍在null。
以下解决方案是不可接受的,因为我已经有用户模型:
User user = db.Users.Include("Roles.Permissions").Where(x => x.ID == 1).FirstOrDefault();
MMTTMM
相关分类