Pregunta

Tengo 2 entidades rol y permiso con la asociación uno a muchos en consecuencia.

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

y creó clases de mapeo para ellos heredadas de la clase de EntityTypeConfiguration.

Cuando ejecuto mi aplicación EF creó una base de datos para mí y la clave externa para estas entidades anteriores fue rol_id .

¿Cómo puedo cambiar existente o agregar una nueva convención para obtener el viaje de los subrayados en la clave externa?

Así que quiero tener rolid como una clave externa para mis entidades.

No quiero usar los atributos de anotación de datos y no quiere agregar una propiedad adicional a la clase de permisos (public int RoleId { get; set; }) para usarlo en el mapeo de esta manera:
HasRequired(x => x.Role).WithMany(y => y.Permissions).HasForeignKey(o => o.RoleId);

gracias,
Alexey

¿Fue útil?

Solución

El marco de entidades actualmente no admite las convenciones globales personalizadas, pero puede sobrescribir el nombre de la llave en la API de fluencia:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top