Azure Functions .NET Core 中的 EF Core 2.0 连接字符串

EF Core 2.0 connection string in Azure Functions .NET Core

我在使用 .net 核心的 Azure Functions 中使用 EF 核心 2.0。我正在尝试从 local.settings.json 读取 db ConnectionString,其定义为:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
  },
  "ConnectionStrings": {
    "MyDbConnStr": "Data Source=.;Initial Catalog=xxxxxxx"
  }
}

Environment.GetEnvironmentVariable() 没有 return 任何连接字符串信息,我也不能将 ConfigurationManager.ConnectionStrings 与 .net 核心一起使用。 如何从代码访问连接字符串?

您可以使用 Microsoft.Azure.WebJobs.Host 中的 classes 助手之一:

AmbientConnectionStringProvider.Instance.GetConnectionString("MyDbConnStr")

此 class 将工作委派给名为 ConfigurationUtility 的内部 class,它的工作与

一致
var configuration = new ConfigurationBuilder()
    .AddEnvironmentVariables()
    .AddJsonFile("appsettings.json", true)
    .Build();
var conn = configuration.GetConnectionString("MyDbConnStr");

您可以使用 Environment.GetEnvironmentVariable。键是 "ConnectionStrings:YourKey"

假设您的 local.settings.json 如下所示:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
  },
  "ConnectionStrings": {
    "sqldb_connection": "connection_string_here"
  }
}

使用Environment.GetEnvironmentVariable("ConnectionStrings:sqldb_connection", EnvironmentVariableTarget.Process); 获取值