实体框架5外键映射约定

时间:2012-10-02 08:50:00

标签: code-first entity-framework-5

我有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 作为我的实体的外键。

我不想使用数据注释属性,也不想为Permission类(public int RoleId { get; set; })添加额外的属性,以便在映射中使用它:
HasRequired(x => x.Role).WithMany(y => y.Permissions).HasForeignKey(o => o.RoleId);

谢谢,
阿列克谢

1 个答案:

答案 0 :(得分:3)

实体框架目前不支持自定义全局约定,但您可以在fluen API中覆盖密钥的名称:

modelBuilder.Entity<Permission>()
            .HasRequired(x => x.Role)
            .WithMany(y => y.Permissions)
            .Map(m => m.MapKey("RoleId"));