using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Debug;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
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);
ent.HasMany(p => p.Details)
.WithOne()
.HasForeignKey(p => p.Fid)
.OnDelete(DeleteBehavior.Cascade);
});
//移箱明细
builder.Entity(ent =>
{
ent.ToTable("t_wms_movebox_record_details");
ent.HasKey(x => x.Id);
ent.Property(f => f.SerialNumbers).HasConversion(
v => JsonConvert.SerializeObject(v),
v => JsonConvert.DeserializeObject>(v));
});
#region 序列号
//序列号
builder.Entity(ent =>
{
ent.ToTable("t_wms_serialnumbers");
ent.HasKey(x => x.Id);
});
//序列号
builder.Entity(ent =>
{
ent.ToTable("t_wms_serialnumbers_ops");
ent.HasKey(x => x.Id);
});
//序列号操作记录
builder.Entity(ent =>
{
ent.ToTable("t_wms_serialnumberoperate");
ent.HasKey(x => x.Id);
});
#endregion
//定时任务时间记录表
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.HasMany(p => p.ErpDetails)
.WithOne()
.HasForeignKey(p => p.DetailId)
.OnDelete(DeleteBehavior.Cascade);
ent.HasMany(p => p.BoxsDetails)
.WithOne()
.HasForeignKey(p => p.DetailId)
.OnDelete(DeleteBehavior.Cascade);
});
builder.Entity(ent =>
{
ent.ToTable("t_wms_outstock_erp_details");
ent.HasKey(x => x.Id);
});
builder.Entity(ent =>
{
ent.ToTable("t_wms_outstock_boxs_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_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.HasMany(p => p.ErpDetails)
.WithOne()
.HasForeignKey(p => p.DetailId)
.OnDelete(DeleteBehavior.Cascade);
});
builder.Entity(ent =>
{
ent.ToTable("t_erp_outstock_task_erp_details");
ent.HasKey(x => x.Id);
});
#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);
ent.Property(f => f.SerialNumbers).HasConversion(
v => JsonConvert.SerializeObject(v),
v => JsonConvert.DeserializeObject>(v));
});
#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);
ent.HasMany(p => p.ErpDetails)
.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),
new ValueComparer>(
(c1, c2) => c1.SequenceEqual(c2),
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
c => (List)c.ToList()));
ent.Property(f => f.TwoSerialNumbers).HasConversion(
v => JsonConvert.SerializeObject(v),
v => JsonConvert.DeserializeObject>(v),
new ValueComparer>(
(c1, c2) => c1.SequenceEqual(c2),
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
c => (List)c.ToList()));
});
builder.Entity(ent =>
{
ent.ToTable("t_wms_instock_erp_details");
ent.HasKey(x => x.Id);
});
builder.Entity(ent =>
{
ent.ToTable("t_wms_instock_total_details");
ent.HasKey(x => x.Id);
ent.Property(f => f.SerialNumbers).HasConversion(
v => JsonConvert.SerializeObject(v),
v => JsonConvert.DeserializeObject>(v),
new ValueComparer>(
(c1, c2) => c1.SequenceEqual(c2),
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
c => (List)c.ToList()));
});
# 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);
});
builder.Entity(ent =>
{
ent.ToTable("t_erp_instock_task_details");
ent.HasKey(x => x.Id);
});
builder.Entity(ent =>
{
ent.ToTable("t_erp_instock_task_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_erp_instock_task_box_details");
ent.HasKey(x => x.Id);
ent.Property(f => f.SerialNumbers).HasConversion(
v => JsonConvert.SerializeObject(v),
v => JsonConvert.DeserializeObject>(v),
new ValueComparer>(
(c1, c2) => c1.SequenceEqual(c2),
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
c => (List)c.ToList()));
});
#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),
new ValueComparer>(
(c1, c2) => c1.SequenceEqual(c2),
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
c => (List)c.ToList()));
});
#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),
new ValueComparer>(
(c1, c2) => c1.SequenceEqual(c2),
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
c => (List)c.ToList()));
});
# 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
//箱唛表
builder.Entity(ent =>
{
ent.ToTable("t_wms_box_mark");
ent.HasKey(x => x.Id);
ent.HasMany(p => p.BillNos)
.WithOne()
.HasForeignKey(p => p.Fid)
.OnDelete(DeleteBehavior.Cascade);
});
//箱唛表-编号表
builder.Entity(ent =>
{
ent.ToTable("t_wms_box_mark_billno");
ent.HasKey(x => x.Id);
});
//物料
builder.Entity(ent =>
{
ent.ToTable("t_wms_materials");
ent.HasKey(x => x.Id);
});
//订阅通知
builder.Entity(ent =>
{
ent.ToTable("t_wms_subscribe_notification");
ent.HasKey(x => x.Id);
var valueComparer = new ValueComparer>(
(c1, c2) => c1.SequenceEqual(c2),
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
c => c.ToList());
ent.Property(f => f.Telephones).HasConversion(
v => JsonConvert.SerializeObject(v),
v => JsonConvert.DeserializeObject>(v))
.Metadata
.SetValueComparer(valueComparer);
ent.Property(f => f.Emails).HasConversion(
v => JsonConvert.SerializeObject(v),
v => JsonConvert.DeserializeObject>(v))
.Metadata
.SetValueComparer(valueComparer); ;
});
//成品即时库存
builder.Entity(ent =>
{
ent.ToTable("t_wms_product_inventory");
ent.HasKey(x => x.Id);
});
base.OnModelCreating(builder);
}
public DbSet ProductInventory { get; set; }
public DbSet Materials { get; set; }
public DbSet BoxMarkBillNo { get; set; }
public DbSet BoxMark { get; set; }
public DbSet FileDownManager { get; set; }
public DbSet SerialNumbers { get; set; }
public DbSet SerialNumbers_Ops { 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 OutStockErpDetails { get; set; }
public DbSet OutStockTaskDetails { get; set; }
public DbSet OutStockTaskErpDetails { get; set; }
public DbSet TakeStockDetails { get; set; }
public DbSet Instock { get; set; }
public DbSet InStockDetails { get; set; }
public DbSet InStockTotalDetails { get; set; }
public DbSet InStockTask { get; set; }
public DbSet InStockErpDetails { get; set; }
public DbSet InstockTaskBox { get; set; }
public DbSet InStockTaskBoxDetails { 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; }
public DbSet SubscribeNotification { get; set; }
}
}