我有 2 个实体角色和权限,相应地关联一对多。
public class Role
{
public int Id { get; set; }
public bool IsAdmin { get; set; }
public virtual ICollection<Permission> Permissions { get; set; }
}
public class Permission
{
public int Id { get; set; }
public string Code { get; set; }
public string GroupName { get; set; }
public virtual Role Role { get; set; }
}
并为它们创建了从EntityTypeConfiguration
类继承的映射类。
当我运行我的应用程序时,EF 为我创建了数据库,并且Role_Id了上述这些实体的外键。
如何更改现有约定或添加新约定以获取外键中的下划线?
因此,我希望将 RoleId 作为实体的外键。
我不想使用数据注释属性,也不想向权限类(public int RoleId { get; set; }
)添加额外的属性,以便在映射中使用它,如下所示:
HasRequired(x => x.Role).WithMany(y => y.Permissions).HasForeignKey(o => o.RoleId);
谢谢
阿列克谢
实体框架目前不支持自定义全局约定,但您可以在 fluen API 中覆盖密钥的名称:
modelBuilder.Entity<Permission>()
.HasRequired(x => x.Role)
.WithMany(y => y.Permissions)
.Map(m => m.MapKey("RoleId"));