using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using AMESCoreStudio.WebApi; using AMESCoreStudio.WebApi.Models.SYS; using AMESCoreStudio.WebApi.Models.AMES; using AMESCoreStudio.WebApi.Models.BAS; namespace AMESCoreStudio.WebApi { /// <summary> /// /// </summary> public class AMESContext : DbContext { /// <summary> /// /// </summary> /// <param name="options"></param> public AMESContext(DbContextOptions<AMESContext> options) : base(options) { //Configuration.ProxyCreationEnabled = false; } /// <summary> /// /// </summary> /// <param name="modelBuilder"></param> protected override void OnModelCreating(ModelBuilder modelBuilder) { /* modelBuilder.Entity<RoleModule>() .HasOne(m => m.Module); */ modelBuilder.Entity<Rules>().HasKey(c => new { c.RuleStationID, c.RuleStatus }); modelBuilder.Entity<WipBarcode>().HasKey(c => new { c.WipNO, c.StartNO, c.EndNO }); modelBuilder.Entity<WipLog>().HasKey(c => new { c.WipID, c.CreateDate }); modelBuilder.Entity<PartMap>().HasKey(c => new { c.CorpSN }); modelBuilder.Entity<WipSopLog>().HasKey(c => new { c.WipID, c.WipSopID }); modelBuilder.Entity<WipRule>().HasKey(c => new { c.WipNO, c.RuleStationID, c.KeyNo }); modelBuilder.Entity<WipMAC>().HasKey(c => new { c.WipNO, c.StartNO, c.EndNO }); modelBuilder.Entity<BarcodeItem>().HasOne(r => r.B).WithMany().HasForeignKey(r => r.BarcodeID).IsRequired(); modelBuilder.Entity<BarcodeItem>().HasOne(r => r.I).WithMany().HasForeignKey(r => r.ItemNo).IsRequired(); modelBuilder.Entity<BarcodeItem>().HasOne(r => r.S).WithMany().HasForeignKey(r => r.RuleStationID).IsRequired(); modelBuilder.Entity<WorkClass>().HasOne(r => r.Group).WithMany().HasForeignKey(r => r.GroupID).IsRequired(); modelBuilder.Entity<ListObj>().HasKey(c => new { c.value, c.name }); modelBuilder.Entity<CycleTime>().HasKey(c => new { c.ItemNo, c.LineID }); modelBuilder.Entity<CycleTime>().HasOne(r => r.Unit).WithMany().HasForeignKey(r => r.SectionNo).IsRequired(); modelBuilder.Entity<CycleTime>().HasOne(r => r.Line).WithMany().HasForeignKey(r => r.LineID).IsRequired(); modelBuilder.Entity<AMESCoreStudio.WebApi.Models.BAS.ClassInfo>().HasOne(r => r.Unit).WithMany().HasForeignKey(r => r.UnitNo).IsRequired(); modelBuilder.Entity<AMESCoreStudio.WebApi.Models.BAS.LineInfo>().HasOne(r => r.Unit).WithMany().HasForeignKey(r => r.UnitNo).IsRequired(); modelBuilder.Entity<AMESCoreStudio.WebApi.Models.BAS.LineInfo>().HasOne(r => r.Dept).WithMany().HasForeignKey(r => r.DeptID).IsRequired(); modelBuilder.Entity<AMESCoreStudio.WebApi.Models.BAS.Stations>().HasOne(r => r.Unit).WithMany().HasForeignKey(r => r.UnitNo).IsRequired(); modelBuilder.Entity<MACInfo>().HasKey(c => new { c.Class, c.ClassGroup }); modelBuilder.Entity<RoleModule>().HasOne(r => r.Module).WithMany().HasForeignKey(r => r.ModuleID).IsRequired(); } /// <summary> /// /// </summary> public DbSet<IDKey> IDKeys { get; set; } /// <summary> /// /// </summary> public DbSet<AuthInfo> AuthInfo { get; set; } /// <summary> /// /// </summary> public DbSet<SystemInfo> SystemInfoes { get; set; } /// <summary> /// /// </summary> public DbSet<ModuleInfo> ModuleInfoes { get; set; } /// <summary> /// /// </summary> public DbSet<ProgramInfo> ProgramInfoes { get; set; } /// <summary> /// /// </summary> public DbSet<RoleInfo> RoleInfoes { get; set; } /// <summary> /// /// </summary> public DbSet<UserInfo> UserInfoes { get; set; } /// <summary> /// /// </summary> public DbSet<DeptInfo> DeptInfoes { get; set; } /// <summary> /// /// </summary> public DbSet<RoleModule> RoleModules { get; set; } /// <summary> /// /// </summary> public DbSet<RoleProgram> RolePrograms { get; set; } /// <summary> /// /// </summary> public DbSet<UserRole> UserRoles { get; set; } //#region AMES Table BAS /// <summary> /// 工廠 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.BAS.FactoryInfo> FactoryInfos { get; set; } /// <summary> /// 單位 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.BAS.FactoryUnit> FactoryUnits { get; set; } /// <summary>ClassInfo /// 線別 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.BAS.LineInfo> LineInfoes { get; set; } /// <summary> /// 班别資料 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.BAS.ClassInfo> ClassInfoes { get; set; } /// <summary>TIME_SEGMENT /// 生產時段 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.BAS.TimeSegment> TimeSegments { get; set; } /// <summary> /// 工作臺類別 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.BAS.StationType> StationTypes { get; set; } /// <summary> /// 工作臺 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.BAS.Stations> Stationses { get; set; } /// <summary> /// 責任單位資料 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.BAS.RepairResponsibleUnits> RepairResponsibleUnitses { get; set; } /// <summary> /// 郵件群组類别 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.BAS.MailGroup> MailGroups { get; set; } /// <summary> /// 郵件群组資料 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.BAS.MailGroupDetail> MailGroupDetails { get; set; } /// <summary> /// 測試代號 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.BAS.TestType> TestTypes { get; set; } /// <summary> /// List /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.BAS.ListObj> ListObjs { get; set; } /////////////////////////*****///////////////////////////////////////////////////////// /// <summary> /// 正背面 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.AMES.MFGType> MFGTypes { get; set; } /// <summary> /// 工單性質 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.AMES.ProcessType> ProcessTypes { get; set; } /// <summary> /// 產品別 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.AMES.ProductType> ProductTypes { get; set; } /// <summary> /// 工單機種資料 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.AMES.WipAtt> WipAtts { get; set; } /// <summary> /// 工單基本資料文件 /// </summary> public DbSet<AMESCoreStudio.WebApi.Models.AMES.WipInfo> WipInfos { get; set; } /// <summary> /// 流程資料 /// </summary> public DbSet<FlowRule> FlowRules { get; set; } /// <summary> /// 流程站別資料 /// </summary> public DbSet<RuleStation> RuleStations { get; set; } /// <summary> /// 流程規則資料 /// </summary> public DbSet<Rules> Ruleses { get; set; } /// <summary> /// 條碼狀態資料 /// </summary> public DbSet<BarcodeStatus> BarcodeStatus { get; set; } /// <summary> /// 異常群組資料 /// </summary> public DbSet<ErrorGroup> ErrorGroups { get; set; } /// <summary> /// 異常類別資料 /// </summary> public DbSet<ErrorClass> ErrorClasses { get; set; } /// <summary> /// 工單狀態資料 /// </summary> public DbSet<WipStatus> WipStatus { get; set; } /// <summary> /// 工單鎖定資料檔 /// </summary> public DbSet<WipLock> WipLocks { get; set; } /// <summary> /// 工單條碼起迄資料檔 /// </summary> public DbSet<WipBarcode> WipBarcodes { get; set; } /// <summary> /// 異常原因資料 /// </summary> public DbSet<ErrorReason> ErrorReasons { get; set; } /// <summary> /// 工單投產纪錄資料文件 /// </summary> public DbSet<WipLog> WipLogs { get; set; } /// <summary> /// 工單投產纪錄資料文件 /// </summary> public DbSet<NGGroup> NGGroups { get; set; } /// <summary> /// 工單投產纪錄資料文件 /// </summary> public DbSet<NGClass> NGClasses { get; set; } /// <summary> /// 維修群組資料 /// </summary> public DbSet<RMAGroup> RMAGroups { get; set; } /// <summary> /// 維修類別資料 /// </summary> public DbSet<RMAClass> RMAClasses { get; set; } /// <summary> /// 維修原因資料 /// </summary> public DbSet<RMAReason> RMAReasons { get; set; } /// <summary> /// 機種C/T資料 /// </summary> public DbSet<CycleTime> CycleTimes { get; set; } ///// <summary> ///// 不良現象原因代碼資料 ///// </summary> public DbSet<NGReason> NGReasons { get; set; } /// <summary> /// 問題類別資料 /// </summary> public DbSet<QAType> QATypes { get; set; } /// <summary> /// 維修方式資料 /// </summary> public DbSet<RepairType> RepairTypes { get; set; } /// <summary> /// 組件類別資料 /// </summary> public DbSet<RepairItem> RepairItems { get; set; } /// <summary> /// 序號料號資料 /// </summary> public DbSet<PartMap> PartMaps { get; set; } /// <summary> /// 組件料號序號資料 /// </summary> public DbSet<KPLink> KPLinks { get; set; } /// <summary> /// 組件類別資料 /// </summary> public DbSet<Items> Items { get; set; } /// <summary> /// MAC資料 /// </summary> public DbSet<MACInfo> MACInfoes { get; set; } /// <summary> /// SOP文件維護 /// </summary> public virtual DbSet<WipSop> WipSops { get; set; } public virtual DbSet<MaterialItem> MaterialItems { get; set; } /// <summary> /// /// </summary> public virtual DbSet<MaterialKp> MaterialKps { get; set; } /// <summary> /// 工單資訊-板卡工程資訊 /// </summary> public virtual DbSet<WipBoard> WipBoards { get; set; } /// <summary> /// 工單資訊-系統組裝工程資訊 /// </summary> public virtual DbSet<WipSystem> WipSystems { get; set; } /// <summary> /// 工單資訊-系統組裝工程資訊 /// </summary> public virtual DbSet<BarcodeChange> BarcodeChanges { get; set; } /// <summary> /// 工單對應SOP文件log /// </summary> public virtual DbSet<WipSopLog> WipSopLogs { get; set; } /// <summary> /// 工單資料-標籤 /// </summary> public virtual DbSet<WipLabel> WipLabels { get; set; } /// <summary> /// 工單MAC資料檔 /// </summary> public virtual DbSet<WipMAC> WipMACs { get; set; } /// <summary> /// 工單條碼規則設定文件檔 /// </summary> public virtual DbSet<WipRule> WipRules { get; set; } /// <summary> /// 工單條碼區間設定檔(除内部SN) /// </summary> public virtual DbSet<WipBarcodeOther> WipBarcodeOthers { get; set; } ///條碼資料 /// </summary> public DbSet<BarcodeInfo> BarcodeInfoes { get; set; } /// <summary> ///條碼组件資料 /// </summary> public DbSet<BarcodeItem> BarcodeItems { get; set; } /// <summary> ///工時群組資料 /// </summary> public DbSet<WorkGroup> WorkGroups { get; set; } /// <summary> ///工作類別資料 /// </summary> public DbSet<WorkClass> WorkClasses { get; set; } /// <summary> ///標準工時資料 /// </summary> public DbSet<StandardWorkTime> StandardWorkTimes { get; set; } /// <summary> ///每日出勤資料 /// </summary> public DbSet<WorkManPower> WorkManPowers { get; set; } /// <summary> ///援入援外資料 /// </summary> public DbSet<SupportUser> SupportUsers { get; set; } /// <summary> ///異常工時資料 /// </summary> public DbSet<ExceptionWorktime> ExceptionWorktimes { get; set; } /// <summary> ///重工工時資料 /// </summary> public DbSet<StandardWorkTimeRework> StandardWorkTimeReworks { get; set; } /// <summary> ///無效工時在線收集資料 /// </summary> public DbSet<ExceptionWorktimeOline> ExceptionWorktimeOlines { get; set; } /// <summary> /// 條碼類別資料檔 /// </summary> public virtual DbSet<BarcodeType> BarcodeTypes { get; set; } /// <summary> /// 料號属性代碼基本檔 /// </summary> public virtual DbSet<MatProperty> MatPropertys { get; set; } /// <summary> ///條碼组件變更資料 /// </summary> public DbSet<BarcodeItemChange> BarcodeItemChanges { get; set; } /// <summary> /// 料號站別工項資料檔 /// </summary> public virtual DbSet<MaterialStationsItem> MaterialStationsItems { get; set; } /// <summary> /// 料號治具資訊資料檔 /// </summary> public virtual DbSet<MaterialOutfit> MaterialOutfits { get; set; } } }