30 lines
1.0 KiB
C#
30 lines
1.0 KiB
C#
using Infrastructure;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Controllers.Extensions;
|
|
|
|
public static class DatabaseSetupExtension
|
|
{
|
|
public static void AddDbConnectionService(this IServiceCollection services, IConfiguration config)
|
|
{
|
|
var connectionString = config.GetConnectionString("DefaultConnection")
|
|
?? throw new ArgumentException("Нет строки подключения");
|
|
services.AddDbContext<DatabaseContext>(options => options.UseNpgsql(connectionString));
|
|
services.AddSingleton<IDbContextFactory<DatabaseContext>, DbContextFactory>();
|
|
}
|
|
|
|
public static void MigrateDb(this IApplicationBuilder app)
|
|
{
|
|
try
|
|
{
|
|
using var scope = app.ApplicationServices.CreateScope();
|
|
var context = scope.ServiceProvider.GetRequiredService<IDbContextFactory<DatabaseContext>>();
|
|
using var db = context.CreateDbContext();
|
|
db.Database.Migrate();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine(ex.Message);
|
|
}
|
|
}
|
|
} |