Я нашел проблему. Я добавлю ответ
я проблема с получениемDbContext
правильно вытащить мою строку подключения из моегоlocal.settings.json
Контекст:
Это функциональный проект AzureОсновной код проблемы находится вSystem.Data.Entity.Internal.AppConfig
Хотя у меня естьlocal.settings.json
файл это не дотнет ядро. Это .net 4.6.1Сообщение об ошибке:
«Строка подключения« ShipBob_DevEntities »в файле конфигурации приложения не содержит обязательный атрибут providerName.»
Конфигурация 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"
}
}
}
Проверенные версии конфигурации:
Перемещение имени провайдера в фактическоеConnectionString
значение токена: та же ошибкаНастройкаprovider
атрибут внутриConnectionString
приписыватьEntityClient
: это ничего не сделалИзготовлениеShipBob_DevEntities
строковое значение = до значенияConnectionString
: это вызывает новые ошибки, подобные которым
метаданные ключевых слов не поддерживаются
Я попытался использовать строку подключения ADO, которая выбрасываетcode first
исключение, которое возникает, когда строка подключения неверна вdatabase first
подход.
Я взял на себя смелость декомпилироватьEntityFramework.dll
с помощьюdotPeek и проследили проблему доSystem.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig
, Внутри этого метода есть вызовLazyInternalConnection.FindConnectionInConfig
который выплевываетConnectionStringSettings
объект, который имеет этоProviderName
значение установлено в ноль. К сожалению, я не могу отладитьAppConfig.cs
класс, который, кажется, использует для генерации этого значения, поэтому я застрял.
До сих пор я ознакомился с этими двумя статьями. Один из них гласит, что имя провайдера следует указывать в качестве собственного токена; Однако это не работает.
https://github.com/Azure/azure-functions-cli/issues/193
https://github.com/Azure/azure-functions-cli/issues/46
Кто-нибудь знает правильный формат для использования в local.settings.json для подключения Entity Framework?