public static TMain ReadSysBaseData <TMain>(this DBCtrl db, eSysID configgroup) where TMain : iSysData <eSysID>, new() { TMain vpara = new TMain(); vpara.sysid = configgroup; vpara.tablename = nameof(SYSBASEDATA <eSysID, eBaseDataType>); vpara.prefix = "BASE"; SqlScript sql; if (!typeof(TMain).Name.Contains("Model")) { sql = new SqlScript($@" SELECT * FROM SYSBASEDATA WHERE MODELNAME='*' AND SYSID='{configgroup.ToString()}' AND BASEDATATYPE='{typeof(TMain).Name}'"); } else { sql = new SqlScript($@" SELECT * FROM SYSBASEDATA A JOIN SYSBASEDATA B ON B.SYSID='Main' AND B.BASEDATATYPE='SystemParameter' AND B.BASEDATAID='CurrentSelectModeName' AND A.MODELNAME=B.BASEDATAVALUE WHERE A.SYSID='{configgroup.ToString()}' AND A.BASEDATATYPE='{typeof(TMain).Name}'"); } IEnumerable <SYSBASEDATA <eSysID, eBaseDataType> > data = db.Read <SYSBASEDATA <eSysID, eBaseDataType> >(sql); if (data.Count() == 0) { return(vpara); } data.Read <TMain, eSysID, eBaseDataType>(ref vpara); return(vpara); }
public static List <eBaseDataType> BaseDataTypes(this eSysID sysid) { switch (sysid) { case eSysID.Main: return(new List <eBaseDataType>() { eBaseDataType.LogParameter, eBaseDataType.SystemParameter }); case eSysID.Alarm: return(new List <eBaseDataType>() { eBaseDataType.AlarmParameter }); case eSysID.Conveyor: return(new List <eBaseDataType>() { eBaseDataType.ConveyorParameter, eBaseDataType.ModelConveyorParameter }); case eSysID.Insert: return(new List <eBaseDataType>() { eBaseDataType.InsertParameter, eBaseDataType.ModelInsertParameter }); default: return(null); } }
public static TMain ReadSysTrxData <TMain>(this DBCtrl db, eSysID sysid, string modelname = "*") where TMain : SysData <eSysID>, new() { TMain vpara = new TMain(); vpara.sysid = sysid; vpara.tablename = nameof(SYSTRXDATA <eSysID, eTrxDataType>); vpara.prefix = "TRX"; db.ReadSystrxdatas().Where(x => x.MODELNAME == modelname).Read <TMain, eSysID, eTrxDataType>(ref vpara); return(vpara); }
public static List <SqlScript> UpdateParameter <T>(this DBCtrl db, T Main, eSysID sysid, eBaseDataType dataType) { List <SqlScript> sqls = new List <SqlScript>(); foreach (PropertyInfo item in Main.GetType().GetProperties().Where(x => x.GetCustomAttribute <ConfigAttribute>() != null && x.GetCustomAttribute <ConfigAttribute>().IsSettingColumn)) { SYSBASEDATA <eSysID, eBaseDataType> data = new SYSBASEDATA <eSysID, eBaseDataType>(); // 將設定值寫入DB data.SYSID = sysid; data.MODELNAME = "*"; data.BASEDATATYPE = dataType; data.BASEDATAID = item.Name; data.BASEDATAVALUE = item.PropertyType.IsArray ? data.BASEDATAVALUE = item.GetValue(Main).ToArrayString() : data.BASEDATAVALUE = item.GetValue(Main).ToString(); sqls.AddRange(db.UpdateSysBaseData(data)); } return(sqls); }