我有两个类
class Role
{
string Id { get; set; }
string Name { get; set; }
}
class Permission
{
string Id { get; set; }
string Name { get; set; }
}
我想创建一个表,为一个角色分配多个权限
class RoleAssignedPermissions
{
string Id { get; set; }
Role Role { get; set; }
ICollection<Permission> Permissions { get; set; }
}
在OnModelCreating
我有:
modelBuilder.Entity<Role>(entity =>
{
entity.HasKey(x => x.Id);
});
modelBuilder.Entity<Permission>(entity =>
{
entity.HasKey(x => x.Id);
});
modelBuilder.Entity<RoleAssignedPermissions>(entity =>
{
entity.HasKey(x => x.Id);
entity.HasOne(x => x.Role);
entity.HasMany(x => x.Permissions);
});
在这种情况下是通过添加一个迁移生成三个表,角色表可以用id和name
但是Permissions
代替了id和name,出现了新的列RoleAssignedPermissionsId
,并且在RoleAssignedPermissions
表中出现了id和roleId
但是应该在RoleAssignedPermissions
中为Permissions
的集合列
实体如下:你可以这样做
class Role
{
string Id { get; set; }
string Name { get; set; }
public virtual ICollection<Permission> Permissions {get; set;}
}
class Permission
{
string Id { get; set; }
string Name { get; set; }
[ForeignKey("Role")]
public string RoleId {get; set;}
public virtual Role Role {get; set;}
}