Не удается подключиться к Azure SQL из функции Azure

#azure #entity-framework

#azure #entity-framework

Вопрос:

Я открыл функцию Azure и хотел подключить ее к Azure SQL с помощью первого подхода entity framework (не core), и, похоже, я не могу их успешно подключить

Я попробовал 2 соглашения в моем файле local.settings.json

1:

 "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "sqldb_connection": "{myConnectionString}"
  },
  

2:

 ,
  "ConnectionStrings": {
    "BankContext": "{myConnectionString}"
  }
  
  • BankContext — это имя контекстной модели

Более того, когда я отлаживаю его, он показывает мне другую строку подключения к моему локальному серверу MSSQL.

Большое спасибо!

Ответ №1:

Вам необходимо предоставить более подробную информацию о коде о том, как вы настраиваете свой DbContext, чтобы получить более персонализированный ответ, но я дам вам следующие советы:

  1. Используйте DI так, как вы бы использовали в обычном проекте .NET со встроенным контейнером DI от Microsoft. Для этого вам нужно Microsoft.Azure.Functions.Extensions.DependencyInjection будет использовать следующую конфигурацию:

      [assembly: FunctionsStartup(typeof(Startup))]
    
     namespace YOUR_NAME_SPACE
     {
         public class Startup : FunctionsStartup
         {
             public override void Configure(IFunctionsHostBuilder builder)
             {
                 string SqlConnection = 
                     Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING");
    
                 builder.Services.AddDbContext<PeopleDbContext>(
                     options => options.UseSqlServer(SqlConnection));
             }
         }
     }
      
  • Убедитесь, что у вас AZURE_SQL_CONNECTIONSTRING локально в local.settings.json
  1. Убедитесь, что ваша среда Azure синхронизирована, иначе произойдет сбой. Для этого обязательно включите переменную среды в переменные среды службы приложений на портале

введите описание изображения здесь

введите описание изображения здесь

  1. Теперь вы можете использовать внедрение зависимостей для запроса вашего контекста, служб, которые используют контекст как обычно.

Ответ №2:

Вы пробовали это так (объект со свойством ConnectionString для контекста):

 connectionStrings": {  
    "BankContext": {  
        "ConnectionString": "{myConnectionString}",  
        "ProviderName": "System.Data.SqlClient"  
    }  
}
  

В противном случае вы могли бы явно прочитать строку подключения из настроек и указать is при вызове этой функции в объекте OptionsBuilder:

 .UseSqlServer(Environment.GetEnvironmentVariable("SqlConnectionString"));
  

Ответ №3:

Я думаю, вам следует настроить его вручную на портале.

Перейдите к своим функциям Azure и добавьте строку подключения с именем sqldb_connection .

azure-функция-конфигурация