У меня проблема с получением DbContext
, чтобы правильно вывести строку подключения из моего local.settings.json
Context:
- Это проект функции Azure
- Основной код проблемы находится в
System.Data.Entity.Internal.AppConfig
- Хотя у меня есть файл
local.settings.json
, это не ядро dotnet. Это .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
: та же ошибка ocurrs - Установка атрибута
provider
внутри атрибутаConnectionString
наEntityClient
: это ничего не делало -
Создание
ShipBob_DevEntities
строкового значения = для значенияConnectionString
: это вызывает новые ошибки, для которыхметаданные ключевых слов не поддерживаются
-
Я попытался использовать строку соединения ADO, которая генерирует исключение
code first
, которое, кажется, происходит, когда ваша строка соединения неверна в подходеdatabase first
.
Я взял на себя смелость декомпилировать EntityFramework.dll
с помощью dotPeek и проследить проблему до System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig
. Внутри этого метода есть вызов LazyInternalConnection.FindConnectionInConfig
, который выплескивает объект ConnectionStringSettings
, у которого значение ProviderName
установлено равным null. К сожалению, я не могу отлаживать класс 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?