Czy istnieje sposób na określenie, któreDataProvider (SQL Server) i ConnectionString do wykorzystania tylko do generowania migracji (Add-Migration) i aktualizowania bazy danych (Update-Database)? Nie chcę na stałe kodować wyboru dostawcy danych i ładowania ciągu połączenia do DbContext (.UseSqlServer ()).
Myślę, że EF6 może wybrać parametry połączenia bezpośrednio z web.config, czy jest coś podobnego w EF7?
Odpowiedzi:
1 dla odpowiedzi № 1Nie, musisz użyć opcji
przykład:
string oldConnectionString =@"Server = .;Initial Catalog=EFTutorial; AttachDbFilename=|DataDirectory|EFTutorial.mdf; Trusted_Connection = True; MultipleActiveResultSets = true";
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(oldConnectionString );
base.OnConfiguring(optionsBuilder);
}
możesz także załadować jako json i załadować bezpośrednio z app.config lub web.config.
Jeśli używasz .Net Core:
możesz zdefiniować w pliku appsettings.json ciąg znaków zwężenia w następujący sposób:
{
{
....
},
"Data": {
"ConnectionString": "..."
}
}
przy uruchamianiu aplikacji musisz go załadować:
// Set up configuration sources.
var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");
builder.AddEnvironmentVariables();
Configuration = builder.Build().ReloadOnChanged("appsettings.json");
Następnie musisz również skonfigurować Entity Framework w Startup.cs.
public void ConfigureServices(IServiceCollection services)
{
...
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<AppContext>(options =>
{
options.UseSqlServer(Configuration "Data:ConnectionString"]); });
services.AddScoped<AppContext, AppContext>();
...
}
}
Ważna rzecz tutaj:
services.AddScoped((_) => new AppContext(Configuration["Data:DefaultConnection:ConnectionString"]));
https://docs.asp.net/en/latest/data/entity-framework-6.html
Przykłady ciągu zwężającego w Entity Framework Core 1.0 / 7: https://docs.asp.net/en/latest/fundamentals/configuration.html
Stary sposób (możesz to zrobić również za pomocą EF Core) myzaładuj conenctionString z App.config lub web.config a poprzez proces migracji Add-Migration / Update-Database, EF automatycznie znajdzie parametry połączenia. Ale możesz również podać ciąg znaków zakończenia do Add-Migration w wierszu komend NuGet jako parametr.
Mam nadzieję, że to rozwiąże Twój problem!