Come possiamo passare argomenti all'aggiornamento del database dotnet ef?
Voglio essere in grado di aggiornare diversi database con l'uso di argomenti.
ho provato
Aggiornamento del database dotnet ef "Accetta"
dotnet ef databse update Accettare
ma non ha funzionato ..
O come posso mettere un interruttore per ottenere differenti ConenctionString dalla mia configurazione?
public ProjectContext CreateDbContext(string[] args)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
// Find a way to get different connection string
var connectionString = configuration.GetConnectionString(args[0]);
var builder = new DbContextOptionsBuilder<ProjectContext >();
builder.UseSqlServer(connectionString);
return new ProjectContext(builder.Options);
}
Ho avuto un problema simile recentemente cercando di ottenere un'app Asp.Net Core per leggere la stringa di connessione. Si scopre che non è necessario IDesignTimeDbContextFactory
. Invece, assicurati solo che il tuo contesto abbia un costruttore paramerless, e usi qualcosa di simile all'avvio:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
Questo dovrebbe risolversi a qualsiasi stringa di connessione che hai configurato. Se volevi utilizzare due connessioni separate contemporaneamente (che mi rendo conto che non volevi), puoi farlo registrando più DbContexts a questo punto; per esempio:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("OtherConnection")));