Начато создание решения API с Azure функциями с версией времени выполнения 3.x и . NET Core 3.1 . В решении, использующем также Entity Framework Core 3.1 с первым подходом к коду.
Проверьте файл .csproj :
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>
<RootNamespace>project_name</RootNamespace>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.3" />
</ItemGroup>
В StartUp
class У меня есть следующее для создания контекста базы данных:
public RequestContext CreateDbContext(string[] args)
{
string sqlConnectionString = Environment.GetEnvironmentVariable("SqlConnectionString");
var optionsBuilder = new DbContextOptionsBuilder<RequestContext>();
optionsBuilder.UseSqlServer(sqlConnectionString);
return new RequestContext(optionsBuilder.Options);
}
Итак, в проекте у меня есть модели для миграции, и я выполняю команду с . NET Core CLI как следующее:
dotnet-ef migrations add InitDb
При выполнении Azure Function локально проблем нет, он может прочитать значение строки подключения из local.settings. json файл без проблем. После запуска команды миграции я получаю следующую ошибку:
Значение не может быть нулевым. (Параметр 'connectionString')
Вопрос:
Итак, это ясно он не может найти переменную среды с именем SqlConnectionString
после запуска команда миграции. Используя Visual Studio 2019 с Консоль диспетчера пакетов , есть способ решить эту проблему, настроив переменную среды в качестве следующей команды перед запуском миграции:
$env:SqlConnectionString="Server=<connection-string-value>"
Довольно неприятно переключаться между PM C и VS Code только из-за этого шага, если я хочу запустить миграции. Я проверял разные ответы в похожих темах, но ни один из них не помог мне так сильно.
Итак, есть ли способ сделать то же самое и настроить переменную среды с помощью VS Code терминала, используя bash ? Или какое может быть возможное решение для этого сценария?
Спасибо!