Ich kann wirklich nicht glauben, wie schwer das ist ... erstens die Anforderungen, die ich stelle:
IDesignTimeDbContextFactory
, das ist IDbContextFactory wurde umbenannt, um Entwickler weniger verwirrend zu machen, was sie tut appsettings.json
nicht mehr als einmal machen müssen. Ein Grund dafür ist, dass meine Migrationen in der Domäne von MyClassLibrary.Data
laufen und es keine appsettings.js
Datei in dieser Klassenbibliothek gibt, ich müsste zu Copy to Output Directory
appsettings.js
. Ein weiterer Grund ist, dass es einfach nicht sehr elegant ist. Also hier ist, was ich gerade habe:
%Vor%Und hier ist mein Programm.cs:
%Vor%Und hier ist mein Startup.cs:
%Vor%Was ich tun möchte, ist die IOptions-Muster , also habe ich diese Klasse erstellt:
%Vor% Diese Zeile zu Startup.ConfigureServices
hinzugefügt:
Und dann versuchte und ändere meine Implementierung von IDesignTimeDbContextFactory<AppContext>
zu:
Leider hat das nicht funktioniert, weil das Ioptions<AppSettings>
Argument von public DesignTimeDbContextFactory(IOptions<AppSettings> appSettings)
Konstruktor nicht injiziert wurde. Ich nehme an, dies liegt daran, dass Implementierungen von IDesignTimeDbContextFactory<AppContext>
zur Entwurfszeit aufgerufen werden und die Abhängigkeitsinjektion in .NET Core-Anwendungen zur Entwurfszeit nicht "fertig" ist?
Ich finde es merkwürdig, dass es so schwer ist, eine environmentspezifische Verbindungszeichenfolge mit dem Entity Framework Core 2.0-Muster der Implementierung von IDesignTimeDbContextFactory
einzufügen und Einstellungsdateien wie appsettings.json
more nicht zu kopieren und zu laden als einmal.
Tags und Links .net c# entity-framework .net-core