using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Debug; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Text; using System.Text.Json; using WMS.Web.Domain.Entitys; using WMS.Web.Repositories.Configuration.Log; namespace WMS.Web.Repositories.Configuration { /// /// db上下文 /// public class RepositoryDbContext : DbContext { [Obsolete] public readonly LoggerFactory LoggerFactory = new LoggerFactory(new[] { new DebugLoggerProvider() }); public RepositoryDbContext(DbContextOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { LoggerFactory.AddProvider(new EFCoreLoggerProvider()); base.OnConfiguring(optionsBuilder); optionsBuilder.UseLoggerFactory(LoggerFactory).EnableSensitiveDataLogging(); } protected override void OnModelCreating(ModelBuilder builder) { //改箱 builder.Entity(ent => { ent.ToTable("t_wms_changebox_record"); ent.HasKey(x => x.Id); ent.Property(f => f.SerialNumbers).HasConversion( v => JsonConvert.SerializeObject(v), v => JsonConvert.DeserializeObject>(v)); }); //移箱 builder.Entity(ent => { ent.ToTable("t_wms_movebox_record"); ent.HasKey(x => x.Id); }); //序列号 builder.Entity(ent => { ent.ToTable("t_wms_serialnumbers"); ent.HasKey(x => x.Id); }); //序列号操作记录 builder.Entity(ent => { ent.ToTable("t_wms_serialnumberoperate"); ent.HasKey(x => x.Id); }); //定时任务时间记录表 builder.Entity(ent => { ent.ToTable("t_wms_sync_date"); ent.HasKey(x => x.Id); }); builder.Entity(ent => { ent.ToTable("t_wms_file_down_manager"); ent.HasKey(x => x.Id); }); #region 出库单 builder.Entity(ent => { ent.ToTable("t_wms_outstock"); ent.HasKey(x => x.Id); ent.HasMany(p => p.Details) .WithOne() .HasForeignKey(p => p.Fid) .OnDelete(DeleteBehavior.Cascade); }); builder.Entity(ent => { ent.ToTable("t_wms_outstock_details"); ent.HasKey(x => x.Id); ent.Property(f => f.SerialNumbers).HasConversion( v => JsonConvert.SerializeObject(v), v => JsonConvert.DeserializeObject>(v)); ent.Property(f => f.SourceBillNos).HasConversion( v => JsonConvert.SerializeObject(v), v => JsonConvert.DeserializeObject>(v)); ent.Property(f => f.SaleBillNos).HasConversion( v => JsonConvert.SerializeObject(v), v => JsonConvert.DeserializeObject>(v)); }); #endregion #region 出库任务单 builder.Entity(ent => { ent.ToTable("t_erp_outstock_task"); ent.HasKey(x => x.Id); ent.HasMany(p => p.Details) .WithOne() .HasForeignKey(p => p.Fid) .OnDelete(DeleteBehavior.Cascade); }); builder.Entity(ent => { ent.ToTable("t_erp_outstock_task_details"); ent.HasKey(x => x.Id); ent.Property(f => f.SourceBillNos).HasConversion( v => JsonConvert.SerializeObject(v), v => JsonConvert.DeserializeObject>(v)); ent.Property(f => f.SaleBillNos).HasConversion( v => JsonConvert.SerializeObject(v), v => JsonConvert.DeserializeObject>(v)); }); #endregion #region 盘点单 builder.Entity(ent => { ent.ToTable("t_wms_takestock"); ent.HasKey(x => x.Id); //ent.HasMany(p => p.Details) // .WithOne() // .HasForeignKey(p => p.Fid) // .OnDelete(DeleteBehavior.Cascade); }); builder.Entity(ent => { ent.ToTable("t_wms_takestock_details"); ent.HasKey(x => x.Id); }); #endregion #region 入库单 builder.Entity(ent => { ent.ToTable("t_wms_instock"); ent.HasKey(x => x.Id); ent.HasMany(p => p.Details) .WithOne() .HasForeignKey(p => p.Fid) .OnDelete(DeleteBehavior.Cascade); }); builder.Entity(ent => { ent.ToTable("t_wms_instock_details"); ent.HasKey(x => x.Id); ent.Property(f => f.SerialNumbers).HasConversion( v => JsonConvert.SerializeObject(v), v => JsonConvert.DeserializeObject>(v)); }); # endregion #region 入库任务单 builder.Entity(ent => { ent.ToTable("t_erp_instock_task"); ent.HasKey(x => x.Id); ent.HasMany(p => p.Details) .WithOne() .HasForeignKey(p => p.Fid) .OnDelete(DeleteBehavior.Cascade); ent.HasMany(p => p.Boxs) .WithOne() .HasForeignKey(p => p.TaskId) .OnDelete(DeleteBehavior.Cascade); }); builder.Entity(ent => { ent.ToTable("t_erp_instock_task_box"); ent.HasKey(x => x.Id); }); builder.Entity(ent => { ent.ToTable("t_erp_instock_task_details"); ent.HasKey(x => x.Id); }); #endregion #region 出入库回退记录 builder.Entity(ent => { ent.ToTable("t_wms_back_record"); ent.HasKey(x => x.Id); ent.HasMany(p => p.Details) .WithOne() .HasForeignKey(p => p.Fid) .OnDelete(DeleteBehavior.Cascade); }); builder.Entity(ent => { ent.ToTable("t_wms_back_record_details"); ent.HasKey(x => x.Id); ent.Property(f => f.SerialNumbers).HasConversion( v => JsonConvert.SerializeObject(v), v => JsonConvert.DeserializeObject>(v)); }); #endregion #region 箱库存 builder.Entity(ent => { ent.ToTable("t_wms_box_inventory"); ent.HasKey(x => x.Id); ent.HasMany(p => p.Details) .WithOne() .HasForeignKey(p => p.Fid) .OnDelete(DeleteBehavior.Cascade); }); builder.Entity(ent => { ent.ToTable("t_wms_box_inventory_details"); ent.HasKey(x => x.Id); ent.Property(f => f.SerialNumbers).HasConversion( v => JsonConvert.SerializeObject(v), v => JsonConvert.DeserializeObject>(v)); }); # endregion #region 即时库存相关 builder.Entity(ent => { ent.ToTable("t_wms_inventory_details"); ent.HasKey(x => x.Id); }); builder.Entity(ent => { ent.ToTable("t_wms_inventory_inout_details"); ent.HasKey(x => x.Id); }); #endregion #region 箱信息 builder.Entity(ent => { ent.ToTable("t_ops_box"); ent.HasKey(x => x.Id); ent.HasMany(p => p.Details) .WithOne() .HasForeignKey(p => p.Fid) .OnDelete(DeleteBehavior.Cascade); }); builder.Entity(ent => { ent.ToTable("t_ops_box_details"); ent.HasKey(x => x.Id); }); #endregion base.OnModelCreating(builder); } public DbSet FileDownManager { get; set; } public DbSet SerialNumbers { get; set; } public DbSet ErpOpsSyncDate { get; set; } public DbSet SerialNumberOperate { get; set; } public DbSet ChangeBoxRecord { get; set; } public DbSet MoveBoxRecord { get; set; } public DbSet OutStock { get; set; } public DbSet OutStockTask { get; set; } public DbSet TakeStock { get; set; } public DbSet OutStockDetails { get; set; } public DbSet OutStockTaskDetails { get; set; } public DbSet TakeStockDetails { get; set; } public DbSet Instock { get; set; } public DbSet InStockDetails { get; set; } public DbSet InStockTask { get; set; } public DbSet InstockTaskBox { get; set; } public DbSet InStockTaskDetails { get; set; } public DbSet BackRecord { get; set; } public DbSet BackRecordDetails { get; set; } public DbSet BoxInventory { get; set; } public DbSet BoxInventoryDetails { get; set; } public DbSet InventoryDetails { get; set; } public DbSet InventoryInOutDetails { get; set; } public DbSet Box { get; set; } public DbSet BoxDetails { get; set; } } }