Я пытаюсь использовать платформу сущностей для базы данных в Azure. У меня есть строка подключения, хранящаяся в local.settings. json, но все мои попытки ссылаться на нее из файла Startup.cs не увенчались успехом.
Я могу получить доступ к строке подключения с помощью IConfiguration DI в класс функций, и я могу успешно получить доступ к базе данных с помощью SQL Command, используя конфигурацию, такую как:
string connectionString = _configuration.GetConnectionString("cpni");
Так что я знаю, что строка подключения работает и что я могу получить к ней доступ.
Если я попытаюсь использовать DI с IConfiguration на классе запуска , компилятор не выдаст мне никаких ошибок, но после запуска в режиме отладки я получу следующую ошибку:
System.Private.CoreLib: не определен конструктор без параметров для типа 'CPNI_Functions.Startup'.
Вот то, что я в настоящее время успешно использую с жестко закодированным connectionString (так как использование DI с IConfiguration не работает):
builder.Services.AddDbContext<CpniContext>(
options => options.UseSqlServer(connectionString));
И это позволяет мне работать с базой данных через EF. Я хотел бы использовать некоторую комбинацию этого и что-то вроде этого:
builder.Services.AddDbContext<CpniContext>(/*options need to go here?*/)
.Configure<IConfiguration>((configuration) =>
{
//Or are options supposed to go here somewhere, or be bound here with some sort of .Bind()?
configuration.GetConnectionString("cpni");
});
Если это не имеет смысла или не сработает, то, пожалуйста, дайте мне знать, каков рекомендуемый способ установки этого Я вверх есть. Если возможно, я хочу избежать использования поиска конфигурации через ConfigurationManager.
Для справки, вот полный файл Startup.cs, и это работает:
using CPNI_Functions.Data;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
[assembly: FunctionsStartup(typeof(CPNI_Functions.Startup))]
namespace CPNI_Functions
{
class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
string connectionString = "myconnectionstringhere";
builder.Services.AddDbContext<CpniContext>(
options => options.UseSqlServer(connectionString));
}
/*
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<CpniContext>(configuration.GetConnectionString("cpni"));
}*/
}
}
Я новичок в ядре и я Я новичок в Azure Функции, поэтому, пожалуйста, прости мое невежество по этому поводу. Заранее благодарю за помощь.