9

Io uso Scaffold-DbContext comando nel Package Manager Console per creare e ricreare il contesto e le entità di un database esistito SQL Server:Come impalcettare DbContext con nomi di proprietà DbSet multipli in Entity Framework Core?

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

Funziona perfettamente tranne una cosa: DbSet 's hanno nomi di proprietà in forma singolare:

public partial class MyDbContext : DbContext 
{ 
    public virtual DbSet<Request> Request { get; set; } 
    public virtual DbSet<RequestHeader> RequestHeader { get; set; } 
} 

Preferisco che questi nomi fossero al plurale (Requests ecc.). Oltre alla ricerca sul Web ho controllato la sintassi del comando:

get-Help Scaffold-DbContext -detailed 

E non ha trovato nulla per modificare questo comportamento. Ecco la mia 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> 

Come plurale DbSet nomi quando impalcature?

AGGIORNAMENTO 2017-04: DB La prima pluralizzazione del ponteggio è ora possibile in Entity Framework Core 1.1. Leggi il mio answer qui sotto per i dettagli.

+0

leggi [questo] (https://empiricalthoughts.wordpress.com/2015/11/11/entity-framework-7-database-model-pluralization-part-12/) e [this] (https: // empiricalthoughts.wordpress.com/2015/09/12/entity-framework-7-database-model-pluralization-part-22/) – dotctor

+0

Medico - questo non è più supportato, ma qualcosa di simile apparirà dopo RTM – ErikEJ

+0

Vedere la mia risposta qui: stackoverflow.com/a/47410837/869033 –

risposta

0

La pluralizzazione è possibile in EF Core 1.1. Come Rowan Miller described in its blog, è necessario installare il dispositivo di gonfiaggio e attuare IDesignTimeServices per controllare la pluralizzazione durante lo scaffolding. Tuttavia, essere consapevoli di questo:

Abbiamo messo questi servizi in spazi dei nomi * .internal e si riservano il diritto di rompere le API in qualsiasi punto.

Ecco perché un esempio di codice completo non viene copiato qui. Questa risposta non è accettata per lo stesso motivo: preferisco aspettare fino a quando non avremo un'API stabile.

Un altro problema da considerare: questa soluzione dipende dal fornitore. Funziona perfettamente con SQL Server (l'ho testato). Un altro provider DBMS potrebbe non supportare ancora questa API. Ad esempio, l'ultima versione Npgsql.EntityFrameworkCore.PostgreSQL 1.1.0 non riesce sullo scaffold quando viene utilizzato il valore personalizzato IDesignTimeServices.