Я думаю, что проблема здесь:
public DatenbankKontext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder<DatenbankKontext>();
optionsBuilder.UseSqlServer("MyConnectionString");
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
return new DatenbankKontext(optionsBuilder.Options);
}
То, что UseSqlServer
ожидает фактическую строку подключения, и вы передаете ей строку "MyConnectionString"
, которая является только именем, которое вы вызвал вашу запись конфигурации строки подключения, но UseSqlServer
не примет ее и go копается в ваших appsettings.connectionstrings в поисках чего-то с таким именем; он просто возьмет его, как если бы это была строка подключения, и попытается использовать ее
Я бы ожидал, что она будет больше похожа на вашу другую строку (в регистрации служб), которая:
optionsBuilder.UseSqlServer(Configuration.GetConnectionString("MyConnectionString"));
На самом деле, я даже не совсем уверен, что ваш DatenbankKontextFactory надеется сделать, а создатель DbContext, который вы уже зарегистрированы в DI, не делает? Если по какой-то причине вам нужен DbContext, а тот, который вам предоставил DI, не годится (неправильная область?), Вы можете попросить DI сделать вам другой, возможно, с другой областью действия