using System; using System.Collections.Generic; using System.Linq; using System.Reflection.Emit; using System.Reflection.Metadata; using System.Text; using System.Threading.Tasks; using AyCode.Database.DbContexts; using AyCode.Database.DbContexts.Users; using AyCode.Database.ModelBuilders.Profiles; using AyCode.Entities.Users; using AyCode.Interfaces.Users; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; 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.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.Users { public class UserDbContext : DbContextBase, IUserDbContext //AcUserDbContextBase, IUserDbContext { public DbSet Users { get; set; } public DbSet UserTokens { get; set; } public DbSet
Addresses { get; set; } public DbSet Profiles { get; set; } public DbSet EmailMessages { get; set; } public DbSet Transfers { get; set; } public DbSet TransferDestinationToProducts { get; set; } public DbSet TransferDestinations { get; set; } public UserDbContext() //: this(string.Empty) { } public UserDbContext(DbContextOptions options) //: this(string.Empty) { } public UserDbContext(string name) : base(name) { } public UserDbContext(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 ProductEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); new TransferEntityTypeDefaultConfigurations().Configure(modelBuilder.Entity()); modelBuilder.Entity().Navigation(e => e.Address).AutoInclude(true); new EmailMessageEntityTypeDefaultConfigurations().Configure(modelBuilder.Entity()); //modelBuilder.Entity().HasOne(e => e.TransferDestination); //modelBuilder.Entity().Navigation(e => e.TransferDestination).AutoInclude(true); //modelBuilder.Entity().BuildProductToServiceProviderRelation(); //new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); //modelBuilder.Entity().OwnsOne( // userToProduct => userToProduct.JsonDetailModel, builderUserProductJsonDetail => // { // builderUserProductJsonDetail.ToJson(); // builderUserProductJsonDetail.OwnsMany(userProductJsonDetail => userProductJsonDetail.Cars, builderUserProductToCar => // { // builderUserProductToCar.OwnsOne(userProductToCar => userProductToCar.Car, builderCar => // { // }); // }); // //builderUserProductJsonDetail.OwnsMany(userProductJsonDetail => userProductJsonDetail.Cars2); // }); } } }