Prefijo de tabla global con Entity Framework 7 (rc1)

asp.net-core c# entity-framework entity-framework-core

Pregunta

Estamos usando la versión RC1 de ASP.NET 5 con el nuevo Entity Framework 7 y me gustaría que los nombres de las tablas en la base de datos tengan como prefijo el nombre del espacio de nombres en el que vive el modelo.

Sé cómo hacerlo en la versión anterior de Entity Framework (gracias a esta pregunta SO ), pero no puedo encontrar la misma forma en la nueva versión. Revisé los documentos, lo busqué en Google y metí la cabeza en el código fuente, sin éxito.

Lo que hago en EF6:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Types().Configure(entity => entity.ToTable($"{entity.ClrType.Namespace?.Replace('.', '-')}_{entity.ClrType.Name}s"));

    base.OnModelCreating(modelBuilder);
}

¿Cómo puedo hacer lo mismo con EF7? ¿Es esta una de las cosas que todavía no están allí?

Respuesta aceptada

Hágalo al final de OnModelCreating manipulando el modelo directamente:

foreach (var entity in modelBuilder.Model.GetEntityTypes())
{
    entity.Relational().TableName =
        $"{entity.ClrType.Namespace?.Replace('.', '-')}_{entity.ClrType.Name}s";
}

Respuesta popular

A partir de hoy, 9 de diciembre de 2015, el problema de las convenciones personalizadas de EF7 aún está abierto:

https://github.com/aspnet/EntityFramework/issues/214

Si visita ese enlace, puede profundizar en más detalles.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué