Строка подключения EF Core недоступна в контроллере. ⇐ C#
-
Гость
Строка подключения EF Core недоступна в контроллере.
У меня есть приложение ASP.NET Core 7 с Entity Framework. Я создал минимальный пример, демонстрирующий проблему.
appsettings.Development.json (обратите внимание, что проблемы не существует, если строка подключения находится в appsettings.json):
{ "Строки подключения": { "DefaultConnection": "Источник данных=..." } } Program.cs
Построитель WebApplicationBuilder = WebApplication.CreateBuilder(args); // Добавляем сервисы в контейнер. builder.Services.AddControllers(); string connstr = builder.Configuration.GetConnectionString("DefaultConnection")!; builder.Services.AddDbContext(optionsBuilder => optionsBuilder.UseSqlServer(connstr)); ... connstr показывает строку подключения из appsettings.Development.json, как и ожидалось.
Контроллер
[Route("api/[controller]")] [Апиконтроллер] общедоступный класс CountryController: ControllerBase { частный MyContext только для чтения _db; общедоступный CountryController (MyContext db) { _дб = дб; } [HttpGet] public async Task Get() { Страны List = ждут _db.Countries.ToListAsync(); возвращающиеся страны; } ... } И когда я вызываю этот метод Get(), я получаю ошибку:
Свойство ConnectionString не инициализировано.
Не могу понять, как он потерялся из Program.cs в контроллер?
У меня есть приложение ASP.NET Core 7 с Entity Framework. Я создал минимальный пример, демонстрирующий проблему.
appsettings.Development.json (обратите внимание, что проблемы не существует, если строка подключения находится в appsettings.json):
{ "Строки подключения": { "DefaultConnection": "Источник данных=..." } } Program.cs
Построитель WebApplicationBuilder = WebApplication.CreateBuilder(args); // Добавляем сервисы в контейнер. builder.Services.AddControllers(); string connstr = builder.Configuration.GetConnectionString("DefaultConnection")!; builder.Services.AddDbContext(optionsBuilder => optionsBuilder.UseSqlServer(connstr)); ... connstr показывает строку подключения из appsettings.Development.json, как и ожидалось.
Контроллер
[Route("api/[controller]")] [Апиконтроллер] общедоступный класс CountryController: ControllerBase { частный MyContext только для чтения _db; общедоступный CountryController (MyContext db) { _дб = дб; } [HttpGet] public async Task Get() { Страны List = ждут _db.Countries.ToListAsync(); возвращающиеся страны; } ... } И когда я вызываю этот метод Get(), я получаю ошибку:
Свойство ConnectionString не инициализировано.
Не могу понять, как он потерялся из Program.cs в контроллер?
Мобильная версия