/ / Entity Framework 7 - Migracje: jak określić dostawcę bazy danych i parametry połączenia tylko dla migracji - encja-struktura

Entity Framework 7 - Migrations: jak określić dostawcę bazy danych i ciąg połączenia tylko w przypadku migracji - framework-entity

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 № 1

Nie, 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!