using Microsoft.EntityFrameworkCore; using TIAM.Database.ModelBuilders.Companies; using TIAM.Database.ModelBuilders.Emails; using TIAM.Database.ModelBuilders.Products; using TIAM.Database.ModelBuilders.Transfers; using TIAM.Database.ModelBuilders.Users; using TIAM.Entities.Addresses; using TIAM.Entities.Drivers; using TIAM.Entities.Emails; using TIAM.Entities.Permissions; using TIAM.Entities.Products; using TIAM.Entities.Profiles; using TIAM.Entities.ServiceProviders; using TIAM.Entities.Transfers; using TIAM.Entities.Users; namespace TIAM.Database.DbContexts.Admins { public class AdminDbContext : DbContextBase, IAdminDbContext { public DbSet Users { get; set; } public DbSet Profiles { get; set; } public DbSet Companies { get; set; } public DbSet UserTokens { get; set; } public DbSet TransferDestinations { get; set; } public DbSet TransferDestinationToProducts { get; set; } public DbSet Transfers { get; set; } public DbSet TransferToDrivers { get; set; } public DbSet Cars { get; set; } //public DbSet ServiceProviders { get; set; } public DbSet Products { get; set; } public DbSet UserProductMappings { get; set; } public DbSet PermissionGroups { get; set; } public DbSet PermissionGroupUserMappings { get; set; } public DbSet PermissionContextMappings { get; set; } public DbSet PermissionsTypes { get; set; } public DbSet EmailMessages { get; set; } public DbSet
Addresses { get; set; } public AdminDbContext() //: this(string.Empty) { } public AdminDbContext(string name) : base(name) { } public AdminDbContext(DbContextOptions options, string name) : base(options, name) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); new UserEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); new ProfileEntityTypeConfigurations().Configure(modelBuilder.Entity()); new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); new ProductEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); new TransferEntityTypeDefaultConfigurations().Configure(modelBuilder.Entity()); modelBuilder.Entity().Navigation(e => e.Address).AutoInclude(true); modelBuilder.Entity().Navigation(e => e.Car).AutoInclude(true); modelBuilder.Entity().HasOne(e => e.TransferDestination); modelBuilder.Entity().Navigation(e => e.TransferDestination).AutoInclude(true); new EmailMessageEntityTypeDefaultConfigurations().Configure(modelBuilder.Entity()); new CompanyEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); modelBuilder.Entity().Navigation(e => e.Profile).AutoInclude(true); modelBuilder.Entity().HasOne(x => x.Profile).WithOne().OnDelete(DeleteBehavior.Cascade); //modelBuilder.Entity().Ignore(x => x.Id); //modelBuilder.Entity().Ignore(x => x.Id); ////modelBuilder.Entity().Ignore(x => x.Cars); //modelBuilder.Entity().Ignore(x => x.Cars); //modelBuilder.Entity().HasNoKey(); //modelBuilder.Entity().HasNoKey(); //JSONMODEL - J. //modelBuilder.Entity().OwnsOne( // userToProduct => userToProduct.JsonDetailModel, builderUserProductJsonDetail => // { // builderUserProductJsonDetail.ToJson(); // //builderUserProductJsonDetail.Property(nameof(UserProductMapping.JsonDetailModel)).HasColumnName("JsonDetailModel"); // builderUserProductJsonDetail.OwnsMany(userProductJsonDetail => userProductJsonDetail.Cars, builderUserProductToCar => // { // //builderUserProductToCar.ToJson(); // //builderUserProductToCar.Ignore(x => x.UserProductToCarId); // //builderUserProductToCar.Ignore(x => x.Created); // //builderUserProductToCar.Ignore(x => x.Modified); // builderUserProductToCar.OwnsOne(userProductToCar => userProductToCar.Car, builderCar => // { // //builderCar.ToJson(); // //builderCar.Ignore(x => x.Id); // //builderCar.Ignore(x => x.Created); // //builderCar.Ignore(x => x.Modified); // }); // }); // //builderUserProductJsonDetail.OwnsMany(userProductJsonDetail => userProductJsonDetail.Cars2); // }); //modelBuilder.Entity().OwnsOne( // userToProduct => userToProduct.Car, ownedNavigationBuilder => // { // ownedNavigationBuilder.ToJson(); // }); } } }