56 lines
2.4 KiB
C#
56 lines
2.4 KiB
C#
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<TUser, TProfile, TUserToken, TCompany, TUserToServiceProvider, TProfileAddress, TEmailMessage> : AcDbContextBase, IAcUserDbContextBase<TUser, TProfile, TUserToken, TCompany, TUserToServiceProvider, TProfileAddress, TEmailMessage>
|
|
where TUser : class, IAcUser<TProfile, TCompany, TUserToServiceProvider, TProfileAddress>
|
|
where TProfile : class, IAcProfile<TProfileAddress>
|
|
where TUserToken : class, IAcUserTokenBase
|
|
where TCompany : class, IAcCompany<TUser, TUserToServiceProvider, TProfile>//IAcServiceProviderBase
|
|
where TUserToServiceProvider : class, IAcUserToCompanyBase
|
|
where TProfileAddress : class, IAcAddress
|
|
where TEmailMessage : class, IAcEmailMessageBase
|
|
{
|
|
public required DbSet<TUser> Users { get; set; }
|
|
public required DbSet<TUserToken> UserTokens { get; set; }
|
|
public DbSet<TProfileAddress> Addresses { get; set; }
|
|
public DbSet<TProfile> Profiles { get; set; }
|
|
public DbSet<TEmailMessage> EmailMessages { get; set; }
|
|
|
|
|
|
protected AcUserDbContextBase() : this(string.Empty)
|
|
{ }
|
|
|
|
protected AcUserDbContextBase(string name) : base(name)
|
|
{ }
|
|
|
|
protected AcUserDbContextBase(DbContextOptions<DbContext> 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<TUser, TProfile, TCompany, TUserToServiceProvider, TProfileAddress>().Configure(modelBuilder.Entity<TUser>());
|
|
new AcProfileEntityTypeDefaultConfiguration<TProfile, TProfileAddress>().Configure(modelBuilder.Entity<TProfile>());
|
|
|
|
//new EmailMessageEntityTypeDefaultConfigurations().Configure(modelBuilder.Entity<EmailMessage>());
|
|
}
|
|
}
|
|
}
|