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:
public partial class MyDbContext : DbContext
{
public virtual DbSet<Request> Request { get; set; }
public virtual DbSet<RequestHeader> RequestHeader { get; set; }
}
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:
get-Help Scaffold-DbContext -detailed
Y no encontró nada para cambiar este comportamiento. Aquí está mi packages.config
:
<packages>
<package id="EntityFramework.Commands" version="7.0.0-rc1-final" targetFramework="net46" />
<package id="EntityFramework.Core" version="7.0.0-rc1-final" targetFramework="net46" />
...
</packages>
¿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.
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
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.