У меня есть приложение .net core. Я записываю строку подключения в файл appsettings.json.
Но теперь я хочу получить эту строку подключения для моего контекста. Как это сделать?
В .net Framework 4.6 я использовал это:
ConfigurationManager.ConnectionStrings["ConnStrName"].ConnectionString;
У меня есть appsettings.Development.json, как это (*** может быть любым именем):
"ConnectionStrings": {
"***": "Server=***;Database=****;Trusted_Connection=True;MultipleActiveResultSets=true;"
}
Я добавил услугу:
services.AddTransient<MyContext>(provider =>
{
return new MyContext(configuration["ConnectionStrings:***"]);
});
и это конструктор контекста (ТОЛЬКО ЭТО, а не конструктор по умолчанию, потому что если я пишу по умолчанию, он не берет мою строку подключения из файла json):
public MyContext(string connectionString)
: base(connectionString)
{
try
{
this.Database.Log = (s) => System.Diagnostics.Debug.Write(s);
}
catch (Exception e)
{
//CurrentLogger.Log.Error(e);
}
}
После этого у меня появляется эта ошибка после запуска команды Enable-Migration
Целевой контекст «MyContext» не может быть создан. Добавьте конструктор по умолчанию или предоставьте реализацию IDbContextFactory.
Если бы я как-то мог получить строку подключения от json здесь:
все будет хорошо. Но я хочу сделать это с одной строкой в .NET CORE , если это возможно, как в .net framework: с этим:
ConfigurationManager.ConnectionStrings["ConnStrName"].ConnectionString;
.net framework 4.6