internal string Delete(Table table,out List<IDbDataParameter> parameters) { sTable tbl = _pool.Mapping[table.GetType()]; List<SelectParameter> tmpPars = new List<SelectParameter>(); List<string> pkeys = new List<string>(tbl.PrimaryKeyFields); if (tbl.PrimaryKeyFields.Length == 0) { foreach (string prop in tbl.Properties) { tmpPars.Add(new EqualParameter(prop, table.GetInitialPrimaryValue(prop))); } } else { foreach (string prop in tbl.Properties) { sTableField[] flds = tbl[prop]; if (flds.Length > 0) { if (pkeys.Contains(flds[0].Name)) tmpPars.Add(new EqualParameter(prop, table.GetInitialPrimaryValue(prop))); } } } return Delete(table.GetType(), tmpPars.ToArray(), out parameters); }
internal string Update(Table table, out List<IDbDataParameter> queryParameters) { queryParameters = new List<IDbDataParameter>(); if ((table.ChangedFields == null) || (table.ChangedFields.Count == 0)) return ""; sTable tbl = _pool.Mapping[table.GetType()]; List<string> changedFields = table.ChangedFields; if (changedFields == null) changedFields = new List<string>(tbl.Properties); if (changedFields.Count == 0) return ""; Dictionary<string, object> updateFields = new Dictionary<string, object>(); List<SelectParameter> parameters = new List<SelectParameter>(); List<string> pkeys = new List<string>(tbl.PrimaryKeyProperties); foreach (string prop in tbl.Properties) { if (changedFields.Contains(prop) && !tbl.ArrayProperties.Contains(prop)) updateFields.Add(prop, table.GetField(prop)); if (pkeys.Count == 0 || pkeys.Contains(prop)) parameters.Add(new EqualParameter(prop, table.GetInitialPrimaryValue(prop))); } return Update(table.GetType(), updateFields, parameters.ToArray(), out queryParameters); }