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

时间:2017-12-14 04:45:53

标签: 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"
  }
}

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

2 个答案:

答案 0 :(得分:10)

您可以使用Microsoft.Azure.WebJobs.Host中的一个辅助类:

AmbientConnectionStringProvider.Instance.GetConnectionString("MyDbConnStr")

这个类将工作委托给名为ConfigurationUtility的内部类,它根据

执行某些操作
var configuration = new ConfigurationBuilder()
    .AddEnvironmentVariables()
    .AddJsonFile("appsettings.json", true)
    .Build();
var conn = configuration.GetConnectionString("MyDbConnStr");

答案 1 :(得分:7)

您可以使用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); 得到价值