O Entity framework 5 de chave estrangeira de mapeamento de convenção
-
12-12-2019 - |
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
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"));