using System; using System.Collections.Generic; using ASC.Common; using ASC.Core.Common.EF.Model; using ASC.Core.Common.EF.Model.Mail; using Microsoft.EntityFrameworkCore; namespace ASC.Core.Common.EF.Context { public class MySqlMailDbContext : MailDbContext { } public class PostgreSqlMailDbContext : MailDbContext { } public class MailDbContext : BaseDbContext { public DbSet MailboxServer { get; set; } public DbSet ServerServer { get; set; } public DbSet MailboxProvider { get; set; } public DbSet Mailbox { get; set; } public DbSet ApiKeys { get; set; } public DbSet GreyListingWhiteList { get; set; } public MailDbContext() { } public MailDbContext(DbContextOptions options) : base(options) { } protected override Dictionary> ProviderContext { get { return new Dictionary>() { { Provider.MySql, () => new MySqlMailDbContext() } , { Provider.PostgreSql, () => new PostgreSqlMailDbContext() } , }; } } protected override void OnModelCreating(ModelBuilder modelBuilder) { ModelBuilderWrapper .From(modelBuilder, Provider) .AddMailbox() .AddMailboxProvider() .AddServerServer() .AddGreyListingWhiteList(); } } public static class MailDbExtension { public static DIHelper AddMailDbContextService(this DIHelper services) { return services.AddDbContextManagerService(); } } }