static DBColum Set(this DBColum colum, int index, object newvalue) { Exception gotexceptions = null; Set(colum, CoreResolver.GetTime.Invoke(), index, newvalue, out gotexceptions); return(colum); }
static void Add(this DBColum colum, long time, object newvalue, out Exception exp) { exp = null; try { if (!CoreResolver.CanUse(colum, newvalue)) { throw new WrongParameterCodeType("{0} type isn't acceptable in colum {1}.", CoreResolver.ReturnType(newvalue.GetType()).ToString(), colum.Name); } if (CoreResolver.UniqueDBKey(colum)) { if (colum.Values.Contains(newvalue)) { throw new DuplicatedUniqueValue("{0} unique value {1} existed already.", colum.Name, newvalue); } } colum.Records.Add(DBColumOrderRecord.Create(DBColumOrderRecordType.Add, time, colum, newvalue)); colum.UpdatedValue = newvalue; colum.Values.Add(newvalue); } catch (Exception e) { exp = e; } }
static object Get(this DBColum colum, long time, int index) { if (colum.Values.Count < index) { return(null); } colum.Records.Add(DBColumOrderRecord.Create(DBColumOrderRecordType.Get, time, colum.Name, colum.Values[index], colum.DefaultValue)); return(colum.Values[index]); }
static DBTableStruct CreateColum(this DBTableStruct table, string name, object defaultvalue, bool autoincreasment = false, bool uniquekey = false) { if (table.Colums.ContainsKey(name)) { throw new Exception(string.Format("already existed table colum {0}.", name)); } DBColum Colum = table.Colums.GetOrAdd(name, DBColum.Create(name, defaultvalue, autoincreasment, uniquekey)); if (OnCreateColum != null) { OnCreateColum.Invoke(table); } return(table); }
static DBColum Add(this DBColum colum, object newvalue) { Exception gotexceptions = null; Add(colum, CoreResolver.GetTime.Invoke(), newvalue, out gotexceptions); if (gotexceptions is DuplicatedUniqueValue) { int index = colum.Values.FindIndex(p => p == newvalue); if (index != -1) { Set(colum, CoreResolver.GetTime.Invoke(), index, newvalue, out gotexceptions); } } return(colum); }
public static DBColumOrderRecord Create(DBColumOrderRecordType type, long time, DBColum colum, object newvalue) { return(new DBColumOrderRecord() { Type = type, Time = time, Colum = colum.Name, oldValue = colum.UpdatedValue, newValue = newvalue }); }