VanguardReMaster/server/src/Vanguard.Server/Storage/MatchDbContextDesignFactory.cs

25 lines
968 B
C#

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
namespace Vanguard.Server.Storage;
/// <summary>
/// Контекст для `dotnet ef`. EF не поднимает всё приложение: берёт фабрику
/// и генерирует миграцию по модели. Строка подключения нужна только
/// для выбора провайдера.
/// </summary>
public sealed class MatchDbContextDesignFactory : IDesignTimeDbContextFactory<MatchDbContext>
{
public MatchDbContext CreateDbContext(string[] args)
{
var connection = Environment.GetEnvironmentVariable("VANGUARD_DESIGN_CONNECTION")
?? "Host=localhost;Database=vanguard;Username=vanguard;Password=vanguard";
var options = new DbContextOptionsBuilder<MatchDbContext>()
.UseNpgsql(connection)
.Options;
return new MatchDbContext(options);
}
}