Nome do provedor ausente ao depurar a AzureFunction e implantar a função azul
Tenho um problema ao obter umDbContext
puxar corretamente minha string de conexão do meulocal.settings.json
Contexto:
Este é um projeto de função do AzureO principal código do problema está emSystem.Data.Entity.Internal.AppConfig
Embora eu tenha umlocal.settings.json
arquivo este não é o núcleo dotnet. É .net 4.6.1Mensagem de erro:
'A cadeia de conexão' ShipBob_DevEntities 'no arquivo de configuração do aplicativo não contém o atributo providerName obrigatório. "'
Configuração Json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"AzureWebJobsDashboard": ""
},
"ConnectionStrings": {
"ShipBob_DevEntities": {
"ConnectionString": "metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string='data source=***;initial catalog=***;persist security info=True;User Id=***;Password=***;;multipleactiveresultsets=True;application name=EntityFramework'",
"providerName": "System.Data.EntityClient"
}
}
}
Versões de configuração testadas:
Movendo o nome do provedor para o realConnectionString
valor do token: o mesmo erro ocorreConfigurando oprovider
atributo dentro doConnectionString
atribuir aEntityClient
: isso não fez nadaFazerShipBob_DevEntities
um valor de sequência = para o valor deConnectionString
: isso gera novos erros, como os que são
metadados de palavras-chave não são suportados
Tentei usar uma string de conexão ADO que lança umcode first
exceção que parece ocorrer quando a cadeia de conexão está incorreta em umdatabase first
aproximação.
Tomei a liberdade de descompilarEntityFramework.dll
usandodotPeek e rastrearam o problema atéSystem.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig
. Dentro deste método, há uma chamada paraLazyInternalConnection.FindConnectionInConfig
que cospe umConnectionStringSettings
objeto que tem éProviderName
valor definido como nulo. Infelizmente, não consigo depurar oAppConfig.cs
classe que parece usar para gerar esse valor, por isso estou preso.
Até agora, consultei esses dois artigos. Um dos quais afirma colocar o nome do provedor como seu próprio token; no entanto, isso não está funcionando.
https://github.com/Azure/azure-functions-cli/issues/193
https://github.com/Azure/azure-functions-cli/issues/46
Alguém sabe o formato correto a ser usado em local.settings.json para uma conexão do Entity Framework?