У меня есть приложение-функция Azure, которое, когда я отлаживаю его на своем локальном ПК, не выдаст никакой ошибки и будет работать правильно, но при развертывании его в сети функций Azure оно выдаст ошибку, указывающую, что мойДля соединения сущностей не указано ProviderName.
Я следовал решениям, указанным в Отсутствует ProviderName при отладке AzureFunction, а также при развертывании функции Azure , я создал myDBContextConfig и добавил его вАвтоматически сгенерированный файл dbContext из моего .edmx, но у меня все еще остается та же проблема после развертывания.
Вот некоторые скриншоты и данные конфигурации, которые я использую:
Ошибка:
Local.settings.json:
{ "IsEncrypted": false,
"Values": {
//Some Values
},
"ConnectionStrings": {
"Entities": {
"ConnectionString": "metadata=res://*/Entities.csdl|res://*/Entities.ssdl|res://*/Entities.msl;provider=System.Data.SqlClient;provider connection string='data source=ES-HHASQL01\\SQLES;initial catalog=Entities;persist security info=True;Integrated Security=False;User ID=****;Password=****;MultipleActiveResultSets=True;application name=EntityFramework'",
"ProviderName": "System.Data.EntityClient"
}
}
}
И строка подключения функций Azure:
Скрытое соединение соответствует стилю приведенного ниже текста.
metadata = res: ///Models.myDB.csdl | res: ///Models.myDB.SSDL | Рез: //*/Models.myDB.msl; поставщик = System.Data.SqlClient; строка подключения поставщика = 'источник данных = [yourdbURL]; начальный каталог = myDB; постоянная информация о безопасности = True; идентификатор пользователя = xxxx; пароль = xxx; MultipleActiveResultSets = True; App =EntityFramework
Если кто-нибудь может мне помочь с этим, я был бы очень признателен.Спасибо.
Редактировать:
Итак, я проверил проблему с кодом, предоставленным @Joey Cai, и сделал следующие изменения:
новая строка подключения параметров приложения имеет следующий вид:
Источник данных = tcp: *. database.windows.net, 1433; Исходный каталог = *** MultipleActiveResultSets = true; Идентификатор пользователя =*; Пароль = ***; Время ожидания соединения = 30; Приложение = EntityFramework;
Я добавил класс конфигурации базы данных в автоматически сгенерированный код из dbContext:
[DbConfigurationType(typeof(EntitiesConfig))]
public partial class Entities : DbContext
{
public Entities()
: base("name=Entities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
}
и созданный класс определен с помощью: @Joey Cai
namespace SameHasDbContext
{
public class EntitiesConfig : DbConfiguration
{
public EntitiesConfig()
{
SetProviderServices("System.Data.EntityClient", SqlProviderServices.Instance);
SetDefaultConnectionFactory(new SqlConnectionFactory());
}
}
}
Но знайте, что я получаю эту ошибку при запуске функции azure, только если тип соединения - SQLServer или SQLAzure, еслиесли выбрано значение «Пользовательский», по-прежнему отображается ошибка «ProviderNamer», показанная ранее: