using LANCommander.Server.Data.Enums; using LANCommander.Server.Data.Models; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using System.Diagnostics; namespace LANCommander.Server.Data { public class DatabaseContext : IdentityDbContext { public static DatabaseProvider Provider = DatabaseProvider.Unknown; public static string ConnectionString = ""; private readonly ILogger Logger; public DatabaseContext(DbContextOptions options, ILogger logger) : base(options) { Logger = logger; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.EnableDetailedErrors(); optionsBuilder.EnableSensitiveDataLogging(); switch (Provider) { case DatabaseProvider.SQLite: optionsBuilder.UseSqlite(ConnectionString, options => options.MigrationsAssembly("LANCommander.Server.Data.SQLite")); break; case DatabaseProvider.MySQL: optionsBuilder.UseMySql(ConnectionString, ServerVersion.AutoDetect(ConnectionString), options => options.MigrationsAssembly("LANCommander.Server.Data.MySQL")); break; case DatabaseProvider.PostgreSQL: optionsBuilder.UseNpgsql(ConnectionString, options => options.MigrationsAssembly("LANCommander.Server.Data.PostgreSQL")); break; } // optionsBuilder.UseLazyLoadingProxies(); base.OnConfiguring(optionsBuilder); } protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships(); builder.ConfigureBaseRelationships