using EFCoreDatabase.Entities;
using Microsoft.EntityFrameworkCore;

namespace EFCoreDatabase.Data
{
    public class DmDBContext:DbContext
    {
        public DmDBContext(DbContextOptions<DmDBContext> options)
            : base(options)
        {

        }

        public DbSet<MANAGE_MAIN> Manage_Main { get; set; }
        public DbSet<MANAGE_LIST> Manage_List { get; set; }
        public DbSet<STORAGE_MAIN> Storage_Main { get; set; }
        public DbSet<STORAGE_LIST> Storage_List { get; set; }
        public DbSet<WH_CELL> Wh_Cell { get; set; }
        public DbSet<IO_CONTROL_ROUTE> Io_Control_Routes { get; set; }
        public DbSet<IO_CONTROL> Io_Control { get; set; }
        public DbSet<RESERVE_CELL> Reserve_Cell { get; set; }
        public DbSet<SYS_ITEM> Sys_Item { get; set; }
        public DbSet<SYS_ITEM_LIST> Sys_Item_List { get; set; }
        
        public DbSet<STACKER_CRANE_STATUS> Stacker_Crane_Status { get; set; }
        public DbSet<IO_CONTROL_APPLY_HIS> Io_Control_Apply_His { get; set; }

        public DbSet<GOODS_MAIN> Goods_Main { get; set; }

        public DbSet<PLAN_MAIN> Plan_main { get; set; }
        public DbSet<PLAN_LIST> Plan_list { get; set; }

        public virtual DbSet<V_STORAGE_LIST> V_Storage_List { get; set; }

        public virtual DbSet<V_MANAGE> V_Manage { get; set; }

        public DbSet<WH_WAREHOUSE> Wh_warehouse { get; set; }


        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            //定义视图无主键
            modelBuilder.Entity<V_STORAGE_LIST>().HasNoKey();
            modelBuilder.Entity<V_MANAGE>().HasNoKey();


            modelBuilder.Entity<MANAGE_LIST>(x => x.Property(e => e.WEIGHT_EMPTY_BUCKET).HasColumnType("decimal"));
            modelBuilder.Entity<MANAGE_LIST>(x => x.Property(e => e.WEIGHT_RUBBER).HasColumnType("decimal"));
            modelBuilder.Entity<MANAGE_LIST>(x => x.Property(e => e.MANAGE_LIST_QUANTITY).HasColumnType("decimal"));
            modelBuilder.Entity<STORAGE_LIST>(x => x.Property(e => e.WEIGHT_EMPTY_BUCKET).HasColumnType("decimal"));
            modelBuilder.Entity<STORAGE_LIST>(x => x.Property(e => e.WEIGHT_RUBBER).HasColumnType("decimal"));
            modelBuilder.Entity<STORAGE_LIST>(x => x.Property(e => e.STORAGE_LIST_QUANTITY).HasColumnType("decimal"));
            modelBuilder.Entity<V_STORAGE_LIST>(x => x.Property(e => e.WEIGHT_EMPTY_BUCKET).HasColumnType("decimal"));
            modelBuilder.Entity<V_STORAGE_LIST>(x => x.Property(e => e.WEIGHT_RUBBER).HasColumnType("decimal"));
            modelBuilder.Entity<V_STORAGE_LIST>(x => x.Property(e => e.MANAGE_LIST_QUANTITY).HasColumnType("decimal"));
            modelBuilder.Entity<V_STORAGE_LIST>(x => x.Property(e => e.STORAGE_LIST_QUANTITY).HasColumnType("decimal"));

            //tlt添加序列和自增ID属性
            modelBuilder.Entity<GOODS_MAIN>().HasKey(x => x.GOODS_ID);//定义主键
            modelBuilder.Entity<GOODS_MAIN>().Property(e => e.GOODS_ID).UseHiLo("GOODS_MAIN_SEQ");//定义主键序列

            modelBuilder.Entity<PLAN_MAIN>().HasKey(x => x.PLAN_ID);//定义主键
            modelBuilder.Entity<PLAN_MAIN>().Property(e => e.PLAN_ID).UseHiLo("PLAN_MAIN_SEQ");//定义主键序列

            modelBuilder.Entity<PLAN_LIST>().HasKey(x => x.PLAN_LIST_ID);//定义主键
            modelBuilder.Entity<PLAN_LIST>().Property(e => e.PLAN_LIST_ID).UseHiLo("PLAN_LIST_SEQ");//定义主键序列

            modelBuilder.Entity<WH_WAREHOUSE>().HasKey(x => x.WAREHOUSE_ID);//定义主键
            modelBuilder.Entity<WH_WAREHOUSE>().Property(e => e.WAREHOUSE_ID).UseHiLo("WH_WAREHOUSE_SEQ");//定义主键序列

            modelBuilder.Entity<MANAGE_MAIN>().HasKey(x => x.MANAGE_ID);//定义主键
            modelBuilder.Entity<MANAGE_MAIN>().Property(e => e.MANAGE_ID).UseHiLo("MANAGE_MAIN_SEQ");//定义主键序列

            modelBuilder.Entity<MANAGE_LIST>().HasKey(x => x.MANAGE_LIST_ID);//定义主键
            modelBuilder.Entity<MANAGE_LIST>().Property(e => e.MANAGE_LIST_ID).UseHiLo("MANAGE_LIST_SEQ");//定义主键序列

        }



    }
}