Ho la mia soluzione del sito divisa in più progetti, uno dei quali ha le classi per il database. Quando ho provato a generare la prima migrazione ottengo il seguente errore:
Entity Framework Core 2.0.3-rtm-10026 inizializzato 'SiteDBContext' utilizzando il provider 'Microsoft.EntityFrameworkCore.SqlServer' con opzioni: Nessuno
Modificare l'assembly di migrazione utilizzando DbContextOptionsBuilder. Ad esempio options.UseSqlServer (connection, b => b.MigrationsAssembly ("")). Per impostazione predefinita, l'assembly di migrazione è l'assembly che contiene DbContext.
Modificare il progetto di destinazione nel progetto di migrazione utilizzando l'elenco a discesa Progetto predefinito della Console di Gestione pacchetti o eseguendo "dotnet ef" dalla directory contenente il progetto di migrazione.
Il tuo progetto di destinazione "" non corrisponde al tuo gruppo di migrazioni "". Cambiare il progetto di destinazione o modificare il gruppo di migrazioni.
Modificare l'assembly di migrazione utilizzando DbContextOptionsBuilder. Ad esempio options.UseSqlServer (connection, b => b.MigrationsAssembly ("")). Per impostazione predefinita, l'assembly di migrazione è l'assembly che contiene DbContext. Modificare il progetto di destinazione nel progetto di migrazione utilizzando l'elenco a discesa Progetto predefinito della Console di Gestione pacchetti o eseguendo "dotnet ef" dalla directory contenente il progetto di migrazione.
Voglio aggiungere l'opzione MigrationsAssembly
insieme al comando my string string, ma non riesco a capire esattamente come farlo.
Il mio codice attuale è:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddDbContext<SiteDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("FFInfoDB")));
}
Provai:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddDbContext<SiteDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("FFInfoDB"), options.MigrationsAssembly("FFInfo.DAL")));
}
Ma ottengo l'errore
DbContextOptionsBuilder non cainta una definizione per MigrationsAssembly
Qual è il modo corretto di aggiungere questa seconda opzione?
Sei abbastanza vicino, ma il secondo livello di configurazione viene eseguito tramite Action<SqlServerDbContextOptionsBuider>
e non tramite il parametro delle Action<DbContextOptionsBuilder> options
.
Quindi, usa questo:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddDbContext<SiteDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("FFInfoDB"), sqlServerOptions => sqlServerOptions.MigrationsAssembly("FFInfo.DAL")));
}
Ho lo stesso problema ma la correzione è abbastanza diversa. I miei ConfigureServices sono quasi gli stessi della risposta sopra, ma sto ancora riscontrando lo stesso problema:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContextPool<AppDbContext>(option =>
{
option.UseSqlServer(Configuration.GetConnectionString("ConnectionStringName")); //I set this on appsettings.json
});
}
Il problema è che sto eseguendo il codice seguente nella directory della mia soluzione che ovviamente non contiene file EF Core e non nella directory che deve popolare i file di migrazione ( Data Access Layer folder
). Il tuo caso potrebbe essere diverso ma assicurati di cambiare la cartella in cui risiede il tuo file DbContext
.
Quindi ho cambiato la mia directory nella mia cartella del livello di accesso ai dati, quindi è il momento in cui eseguo il codice di seguito poiché il mio progetto di avvio si trova nella cartella Core.Web e questa è anche la cartella che contiene il mio file Startup.cs
. ( -s means startup
)
dotnet ef migrations add initialcreate -s ..\Core.Web\Core.Web.csproj