大家好,感谢您花时间阅读我的问题。
我有以下3个POCO:Menu,ApplicationRole和Action。
这些POCO中的每一个都有2个属性ID和描述。
菜单与ApplicationRole有多对多关系,与Action有多对多关系,定义如下:
modelBuilder.Entity<Menu>().HasMany(t => t.Roles).WithMany(p => p.Menus).Map(m => { m.MapLeftKey("MenuId"); m.MapRightKey("RoleId"); m.ToTable("MenuRoles"); });
modelBuilder.Entity<Menu>().HasMany(t => t.Actions).WithMany(p => p.Menus).Map(m => { m.MapLeftKey("MenuId"); m.MapRightKey("ActionId"); m.ToTable("MenuActions"); });
到目前为止非常标准。现在,我需要创建一个权限表来将菜单,角色和操作映射到一起。我可以通过创建实体权限轻松实现,如下所示:
public class Permission
{
[Key, Column(Order = 0), DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid MenuId { get; set; }
[Key, Column(Order = 1), DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid ActionId { get; set; }
[Key, Column(Order = 2), DatabaseGenerated(DatabaseGeneratedOption.None)]
public string RoleId { get; set; }
[ForeignKey("MenuId")]
public virtual Menu Menu { get; set; }
[ForeignKey("ActionId")]
public virtual Action Action { get; set; }
[ForeignKey("RoleId")]
public virtual ApplicationRole Role { get; set; }
}
但是,这样做会创建具有单个POCO实体的外键,而不是与MenuActions和MenuRoles关联。有没有办法创建这种关系,而无需显式创建MenuActions和MenuRoles实体。
我可以使用流畅的API或注释,但如果可能的话,我更喜欢基于注释的解决方案。
提前感谢您的帮助!