using System; using System.Collections.Generic; using ASC.Common; using ASC.Core.Common.EF.Model; using Microsoft.EntityFrameworkCore; namespace ASC.Core.Common.EF.Context { public class MySqlAuditTrailContext : AuditTrailContext { } public class PostgreSqlAuditTrailContext : AuditTrailContext { } public class AuditTrailContext : BaseDbContext { public DbSet AuditEvents { get; set; } public DbSet Users { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { ModelBuilderWrapper .From(modelBuilder, Provider) .AddAuditEvent() .AddUser() .AddDbFunction(); } protected override Dictionary> ProviderContext { get { return new Dictionary>() { { Provider.MySql, () => new MySqlAuditTrailContext() } , { Provider.PostgreSql, () => new PostgreSqlAuditTrailContext() } , }; } } } public static class AuditTrailContextExtension { public static DIHelper AddAuditTrailContextService(this DIHelper services) { return services.AddDbContextManagerService(); } } }