Pergunta

Eu tenho 2 entidades Papel de Permissão e com a associação de um-para-muitos em conformidade.

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

E criou o mapeamento de classes para herdadas a partir de EntityTypeConfiguration de classe.

Quando eu executar meu aplicativo EF banco de dados criado por mim e chave estrangeira para essas entidades acima foi Role_Id.

Como posso alterar existente ou adicionar nova convenção para obter o passeio do carácter de sublinhado na chave estrangeira?

Então eu quero ter RoleId como uma chave estrangeira para o meu entidades.

Eu não quero usar a anotação de dados de atributos e não quer adicionar extra-propriedade para Permissão de classe (public int RoleId { get; set; }), a fim de usá-lo no mapeamento como este:
HasRequired(x => x.Role).WithMany(y => y.Permissions).HasForeignKey(o => o.RoleId);

Obrigado,
Alexey

Foi útil?

Solução

Entity framework atualmente não suporte personalizado global convenções, mas você pode substituir o nome da chave na fluen API:

modelBuilder.Entity<Permission>()
            .HasRequired(x => x.Role)
            .WithMany(y => y.Permissions)
            .Map(m => m.MapKey("RoleId"));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top