2017-03-02 7 views
2

Es war möglich, die Verbindungszeichenfolge eines Kontexts, , nach der Erstellung zu ändern.Ändern der Verbindungszeichenfolge des EF Core-Kontexts zur Laufzeit

Ich kann nicht herausfinden, wie man das mit EF Core (und SQLite) macht. Ich registriere den Kontext auf die übliche Weise mithilfe des integrierten IoC-Containers von ASP.NET Core.

services.AddDbContext<MyContext>(options => 
    options.UseSqlite(cfg.GetConnectionString("DefaultConnection"))); 

Ich kann die MyContext Klasse ändern, wie es in einer separaten Assembly ist, die in der Verantwortung von jemand anderes ist. Also kann ich den Konstruktor OnConfiguring() usw. nicht ändern.

Also muss ich die aktuelle Instanz des Containers mit einer neuen Verbindungszeichenfolge neu erstellen/initialisieren.

Gibt es eine Möglichkeit, dies zu tun?

+0

please teilen Sie Ihre startup.cs –

Antwort

-1

Sicher, yo kann es tun, indem ConfigurationBuilder in Startup

var builder = new ConfigurationBuilder() 
        .SetBasePath(env.ContentRootPath) 
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
    Configuration = builder.Build(); 

Und es dann in Ihrem Kontext verwenden. Wenn ConfigurationBuilder

+4

Ich nehme an, das OP bedeutet, dass sie eine andere Verbindungszeichenfolge zur Laufzeit übergeben möchten, nicht durch Ändern der Konfiguration. – CodeCaster

+0

Liest der Container die Konfiguration jedes Mal, wenn er eine neue Kontextinstanz erstellt? Sieht nicht so aus, da es kein Lambda braucht, nur eine Zeichenfolge 'options.UseSqlite (connectionString)'. Selbst wenn dies der Fall ist, muss ich die Verbindungszeichenfolge * programmatisch * ändern, damit ich die Datei nicht jedes Mal bearbeiten kann. Gibt es eine Möglichkeit, das im Code zu tun? – grokky

+1

Sie können eine Funktion erstellen, die "appsettings.json" ändert –

Verwandte Themen