using AyCode.Database.ModelBuilders.Profiles; using AyCode.Database.ModelBuilders.Users; using AyCode.Interfaces.Addresses; using AyCode.Interfaces.Messages; using AyCode.Interfaces.Profiles; using AyCode.Interfaces.ServiceProviders; using AyCode.Interfaces.Users; using Microsoft.EntityFrameworkCore; namespace AyCode.Database.DbContexts.Users { public abstract class AcUserDbContextBase : AcDbContextBase, IAcUserDbContextBase where TUser : class, IAcUser where TProfile : class, IAcProfile where TUserToken : class, IAcUserTokenBase where TServiceProvider : class, IAcServiceProvider//IAcServiceProviderBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase where TProfileAddress : class, IAcAddress where TEmailMessage : class, IAcEmailMessageBase { public required DbSet Users { get; set; } public required DbSet UserTokens { get; set; } public DbSet Addresses { get; set; } public DbSet Profiles { get; set; } public DbSet EmailMessages { get; set; } protected AcUserDbContextBase() : this(string.Empty) { } protected AcUserDbContextBase(string name) : base(name) { } protected AcUserDbContextBase(DbContextOptions options, string name) : base(options, name) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); optionsBuilder.UseLazyLoadingProxies(true); } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); new AcUserEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); new AcProfileEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); //new EmailMessageEntityTypeDefaultConfigurations().Configure(modelBuilder.Entity()); } } }