¿Cómo andamiaje DbContext con nombres de propiedad de DbSet plurales en Entity Framework Core?

c# entity-framework entity-framework-core sql-server visual-studio-2015

Pregunta

Scaffold-DbContext comando Scaffold-DbContext en la Package Manager Console para crear y volver a crear el contexto y las entidades para una base de datos de SQL Server existente:

Scaffold-DbContext -provider EntityFramework.MicrosoftSqlServer -connection "my connection string"

Funciona perfectamente, excepto por una cosa: los nombres de propiedades de DbSet en singular:

Scaffold-DbContext -provider EntityFramework.MicrosoftSqlServer -connection "my connection string"

Prefiero que estos nombres estén en forma plural ( Requests etc.). Además de la búsqueda en la web, he comprobado la sintaxis del comando:

Scaffold-DbContext -provider EntityFramework.MicrosoftSqlServer -connection "my connection string"

Y no encontró nada para cambiar este comportamiento. Aquí está mi packages.config :

Scaffold-DbContext -provider EntityFramework.MicrosoftSqlServer -connection "my connection string"

¿Cómo pluralizar nombres DbSet cuando andamios?

ACTUALIZACIÓN 2017-04: DB La primera pluralización de andamios ahora es posible en Entity Framework Core 1.1. Lea mi respuesta a continuación para más detalles.

Respuesta aceptada

La pluralización no se admite en EF7 a partir de RC1. Esta y otras limitaciones del andamio EF7 se están rastreando aquí: https://github.com/aspnet/EntityFramework/issues/4038


Respuesta popular

La pluralización es posible en EF Core 1.1. Como Rowan Miller describió en su blog , debe instalar el Inflector e implementar IDesignTimeServices para controlar la pluralización cuando se IDesignTimeServices andamios. Sin embargo, se consciente de ello:

Ponemos estos servicios en *. Espacios de nombres internos y nos reservamos el derecho de romper las API en cualquier momento.

Así que esta es la razón por la que un ejemplo de código completo no se copia aquí. Esta respuesta no se acepta por el mismo motivo: prefiero esperar hasta que obtengamos una API estable.

Otro problema que debe considerar: esta solución depende del proveedor. Funciona bien con SQL Server (lo probé). Es posible que otro proveedor de DBMS aún no admita esta API. Por ejemplo, el último Npgsql.EntityFrameworkCore.PostgreSQL 1.1.0 falla en el andamio cuando se usa IDesignTimeServices personalizado.




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é