Einfügen von Env Conn String in .NET Core 2.0 mit EF Core DbContext in einer anderen Klasse lib als Startup prj & Implementierung von IDesignTimeDbContextFactory

10

Ich kann wirklich nicht glauben, wie schwer das ist ... erstens die Anforderungen, die ich stelle:

  • Implementierung von Entity Framework Core 2.0 ' IDesignTimeDbContextFactory , das ist IDbContextFactory wurde umbenannt, um Entwickler weniger verwirrend zu machen, was sie tut
  • Ich möchte das Laden von 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:

%Vor%

Und dann versuchte und ändere meine Implementierung von IDesignTimeDbContextFactory<AppContext> zu:

%Vor%

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.

    
Brian Ogden 06.09.2017, 23:01
quelle

0 Antworten