如何在两个对象之间创建连接,在EF Core中引用一个对象和多个对象



我有两个类

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;}
}

相关内容

最新更新