È possibile che l'iniezione delle dipendenze possa essere configurata/riavviata quando si utilizzano i comandi di migrazione di Entity Framework?Come si configura DbContext quando si creano migrazioni in Entity Framework Core?
Entity Framework Core supporta l'integrazione delle dipendenze per le sottoclassi DbContext
. Questo meccanismo include la possibilità di configurare l'accesso ai dati al di fuori dello DbContext
.
Ad esempio, il seguente sarebbe configurare EF di persistere a un server SQL utilizzando una stringa di connessione recuperato da config.json
ServiceCollection services = ...
var configuration = new Configuration().AddJsonFile("config.json");
services.AddEntityFramework(configuration)
.AddSqlServer()
.AddDbContext<BillingDbContext>(config => config.UseSqlServer());
Tuttavia, i comandi di migrazioni non sanno eseguire questo codice in modo Add-Migration
falliranno per mancanza di un provider o la mancanza di una stringa di connessione.
migrazioni può essere fatto per lavorare sovrascrivendo OnConfiguring
all'interno del DbContext
sottoclasse per specificare la stringa del provider e la configurazione, ma che si mette di mezzo, quando diversa configurazione si desidera altrove. In definitiva, mantenere i miei comandi di migrazione e il mio codice entrambi funzionanti diventa indesiderabilmente complesso.
Nota: My DbContext
è presente in un gruppo diverso rispetto al punto di ingresso che lo utilizza e la mia soluzione ha più progetti di avvio.
La figura è parte del problema [n. 639] (https://github.com/aspnet/EntityFramework/issues/639). In ASP.NET 5, chiameremo 'Startup.ConfigureServices()'. Secondo te, sarebbe meglio usare la stessa convenzione per progetti non-ASP.NET 5? – bricelam
@bricelam Ora che ho sviluppato un po 'di sviluppo in ASP.NET 5 (utilizzo l'EF7 nell'applicazione .NET tradizionale), posso dire che la standardizzazione della classe 'Startup' mi suona bene. – vossad01
Ho premuto per questo in [aspnet/Hosting n. 286] (https://github.com/aspnet/Hosting/issues/286), ma ho perso. La decisione era di avere diversi caricatori DbContext per diversi tipi di applicazione. Vedi [aspnet/EntityFramework # 2357] (https://github.com/aspnet/EntityFramework/issues/2357). – bricelam