Как определить атрибут providername в параметрах приложения функции Azure

Я пытаюсь установить соединение с базой данных Entity Framework в своей функции Azure. Поэтому мне нужно определить строку подключения в настройках приложения функции. Простое добавление строки подключения с именем моего класса DbContext в качестве ключа на портале Azure приводит к исключению, поскольку атрибут providername не определен при подключении к базе данных. Я использую Entity Framework v. 6.2.0

Исключение составляет:

System.InvalidOperationException: 'Строка подключения CloudOrchestrationEntities в файле конфигурации приложения не содержит обязательного атрибута providerName. "'

Есть ли способ использовать строку json, подобную той, которую я могу определить в local.settings.json в настройках приложения на портале Azure?

"ConnectionStrings": {
"CloudOrchestrationEntities": {
  "ConnectionString": "metadata=res://*/CloudOrchestration.csdl|res://*/CloudOrchestration.ssdl|res://*/CloudOrchestration.msl;provider=System.Data.SqlClient;provider connection string='data source=*****.database.windows.net;initial catalog=*****;user id=*****;password=*****;MultipleActiveResultSets=True;App=EntityFramework'",
  "ProviderName": "System.Data.EntityClient"
}
}

Использование этой записи json в качестве строки подключения на портале Azure, включая имя поставщика, приводит к недопустимой строке подключения в моем коде функции. введите здесь описание изображения  введите описание изображения здесь

Я, конечно, могу определить строку подключения как обычную настройку приложения и получить ее в моем коде функции для подключения к базе данных, но это не так, как я хочу, чтобы эта проблема была решена. На самом деле я не хочу редактировать автоматически сгенерированные классы EF, поскольку я использую их в другом проекте.


person Florian Grummel    schedule 11.06.2018    source источник
comment
какое у вас исключение? какую версию Entity Framework вы используете? Кажется, вы используете старую версию EF? сначала с кодом ваша строка подключения к базе данных должна быть проще   -  person Thomas    schedule 11.06.2018
comment
Я отредактировал свой вопрос и добавил сообщение об исключении, а также версию EF, которую я использую.   -  person Florian Grummel    schedule 12.06.2018
comment
ваша строка подключения - это лазурный портал, который должен находиться в разделе строк подключения. Также имя вашей строки подключения должно быть CloudOrchestrationEntities, а значение metadata=res://*/CloudOrchestration.csdl|res://*/CloudOrchestration.ssdl|res://*/CloudOrchestration.msl;provider=System.Data.SqlClient;provider connection string='data source=*****.database.windows.net;initial catalog=*****;user id=*****;password=*****;MultipleActiveResultSets=True;App=EntityFramework', которое вы не хотите включать json, просто значение   -  person Thomas    schedule 12.06.2018
comment
На самом деле вы просто скопировали строку, которую я разместил выше. Это как раз тот параметр, который не работает, так как я не указал providerName. Пожалуйста, прочтите сообщение внимательно, поскольку я описываю это в первом абзаце.   -  person Florian Grummel    schedule 12.06.2018


Ответы (1)


Невозможно указать имя поставщика System.Data.EntityClient в Azure, только System.Data.SqlClient и MySql.Data.MySqlClient.

В этом вопросе есть несколько обходных путей и возможных решений. Отсутствует ProviderName при отладке AzureFunction, а также при развертывании функции Azure

person ahmelsayed    schedule 12.06.2018