Files
DaSaSo/DaSaSo.Wpf/HostBuilders/AddDbContextHostBuilderExtensions.cs
2023-01-29 13:53:50 +01:00

52 lines
1.9 KiB
C#

using DaSaSo.EntityFramework;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.Wpf.HostBuilders
{
public static class AddDbContextHostBuilderExtensions
{
public static IHostBuilder AddDBContext(this IHostBuilder host)
{
host.ConfigureServices((context,services) =>
{
string connectionString = "";
Action<DbContextOptionsBuilder> configureDbContext;
string databaseToUse = context.Configuration.GetConnectionString("databaseToUse");
Trace.WriteLine(databaseToUse);
if(databaseToUse.Equals("default"))
{
connectionString = context.Configuration.GetConnectionString("default");
configureDbContext = o =>
{
o.UseNpgsql(connectionString);
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
};
}
else if(databaseToUse.Equals("sqlite"))
{
connectionString = context.Configuration.GetConnectionString("sqlite");
configureDbContext = o => o.UseSqlite(connectionString);
}
else
{
throw new NotImplementedException("Database Type not implementent" + databaseToUse);
}
services.AddDbContext<DaSaSoDbContext>(configureDbContext);
services.AddSingleton<DaSaSoDbContextFactory>(new DaSaSoDbContextFactory(configureDbContext));
});
return host;
}
}
}