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

Bor*_*itz 8 c# azure entity-framework-core azure-functions ef-core-2.0

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

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
  },
  "ConnectionStrings": {
    "MyDbConnStr": "Data Source=.;Initial Catalog=xxxxxxx"
  }
}
Run Code Online (Sandbox Code Playgroud)

Environment.GetEnvironmentVariable()不返回任何连接字符串信息,我也不能使用带有.net核心的ConfigurationManager.ConnectionStrings.如何从代码中访问连接字符串?

Mik*_*kov 12

您可以使用以下辅助类之一Microsoft.Azure.WebJobs.Host:

AmbientConnectionStringProvider.Instance.GetConnectionString("MyDbConnStr")
Run Code Online (Sandbox Code Playgroud)

这个类将工作委托给被调用的内部类ConfigurationUtility,它可以执行某些操作

var configuration = new ConfigurationBuilder()
    .AddEnvironmentVariables()
    .AddJsonFile("appsettings.json", true)
    .Build();
var conn = configuration.GetConnectionString("MyDbConnStr");
Run Code Online (Sandbox Code Playgroud)


DOM*_*MZE 9

你可以用Environment.GetEnvironmentVariable.键是"ConnectionStrings:YourKey"

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

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
  },
  "ConnectionStrings": {
    "sqldb_connection": "connection_string_here"
  }
}
Run Code Online (Sandbox Code Playgroud)

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