#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, чтобы получить более персонализированный ответ, но я дам вам следующие советы:
-
Используйте 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
- Убедитесь, что ваша среда Azure синхронизирована, иначе произойдет сбой. Для этого обязательно включите переменную среды в переменные среды службы приложений на портале
- Теперь вы можете использовать внедрение зависимостей для запроса вашего контекста, служб, которые используют контекст как обычно.
Ответ №2:
Вы пробовали это так (объект со свойством ConnectionString для контекста):
connectionStrings": {
"BankContext": {
"ConnectionString": "{myConnectionString}",
"ProviderName": "System.Data.SqlClient"
}
}
В противном случае вы могли бы явно прочитать строку подключения из настроек и указать is при вызове этой функции в объекте OptionsBuilder:
.UseSqlServer(Environment.GetEnvironmentVariable("SqlConnectionString"));