using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using AyCode.Database.DbContexts; using Microsoft.EntityFrameworkCore; 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.Permissions; using TIAM.Entities.Products; using TIAM.Entities.ServiceProviders; using TIAM.Entities.TransferDestinations; 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 TransferDestinations { get; set; } public DbSet Transfers { 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
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 UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); new ProductEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); new TransferEntityTypeDefaultConfigurations().Configure(modelBuilder.Entity()); modelBuilder.Entity().Navigation(e => e.Address).AutoInclude(true); //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(); 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(); // }); } } }