public static string UpdateBuilder(SRO obj, out IMyDbParameter[] prams) { List <IMyDbParameter> pramList = new List <IMyDbParameter>(); Type type = obj.GetType(); StringBuilder sql = new StringBuilder("UPDATE [{0}] SET "); bool isModified = false; IMyPropertyInfo[] myPropertys = PropertyInfoProxy.GetProperties(obj.GetType()); foreach (IMyPropertyInfo property in myPropertys) { if (property.IsSave == false || property.Name == "CreatedDate" || property.Name == "Version") {//判断是否保存 continue; } object pValue = property.GetValue(obj); if (property.Name == "Id" || property.Name == "LastAlterDate") { pramList.Add(ParameterBuilder(property, pValue)); continue; } if (property.PropertyType == typeof(DateTime) && (DateTime)pValue == DateTime.MinValue && obj.GetOriginalValue(property.Name) == null) { continue; } else if (object.Equals(obj.GetOriginalValue(property.Name), pValue)) { continue; } if (!isModified) { isModified = true; } sql.Append("["); sql.Append(property.Name); sql.Append("]=@"); sql.Append(property.Name); sql.Append(","); pramList.Add(ParameterBuilder(property, pValue)); } if (isModified == false) { prams = null; return(null); } prams = pramList.ToArray(); sql.Append(string.Format("[LastAlterDate]=@LastAlterDate,[Version]={0} WHERE [Id]=@Id AND [Version]={1}", ++obj.Version, (long)obj.GetOriginalValue("Version"))); return(sql.ToString()); }
public static string UpdateBuilder(SRO obj, out IMyDbParameter[] prams) { List <IMyDbParameter> pramList = new List <IMyDbParameter>(); Type type = obj.GetType(); StringBuilder sql = new StringBuilder("UPDATE [{0}] SET "); bool isModified = false; IMyPropertyInfo[] myPropertys = PropertyInfoProxy.GetProperties(obj.GetType()); foreach (IMyPropertyInfo property in myPropertys) { if (property.IsSave == false || property.Name == "CreatedDate" || property.Name == "LastAlterDate") {//判断是否保存 continue; } object pValue = property.GetValue(obj); if (property.Name == "Id") { pramList.Add(ParameterBuilder(property, pValue)); continue; } if (object.Equals(obj.GetOriginalValue(property.Name), pValue)) { continue; } isModified = true; sql.Append("["); sql.Append(property.Name); sql.Append("]=@"); sql.Append(property.Name); sql.Append(","); pramList.Add(ParameterBuilder(property, pValue)); } if (isModified == false) { prams = null; return(null); } prams = pramList.ToArray(); sql.Append(string.Format("[LastAlterDate]='{0}' WHERE [Id]=@Id", obj.LastAlterDate)); return(sql.ToString()); }
private static void Update(SRO obj) { Type type = obj.GetType(); IMyDbParameter[] prams; string updateSql = SqlBuilder.UpdateBuilder(obj, out prams); if (string.IsNullOrEmpty(updateSql)) { LogProxy.InfoFormat(OBJECTSISNOTMODIFIED, obj.GetType(), obj.Id); return; } Save(obj, updateSql, prams); }
private static void Save(SRO obj, string sql, IMyDbParameter[] prams) { string tableName; Type type = obj.GetType(); string[] aliases = obj.Aliases; IDbOperate dbOperate; if (aliases.Length == 0) { tableName = GetTableName(obj, null); dbOperate = DbProxy.Create(null, type); dbOperate.ExecuteNonQuery(string.Format(sql, tableName), prams); } else { foreach (string alias in aliases) { tableName = GetTableName(obj, alias); dbOperate = DbProxy.Create(alias, type); dbOperate.ExecuteNonQuery(string.Format(sql, tableName), prams); } } }
private static void Insert(SRO obj) { Type type = obj.GetType(); IMyDbParameter[] prams; string insertSql = SqlBuilder.InsertBuilder(obj, out prams); Save(obj, insertSql, prams); }
private static void Save(SRO obj, string sql, IMyDbParameter[] prams) { string tableName; string executeSql; int executeCnt; Type type = obj.GetType(); string[] aliases = obj.Aliases; IDbOperate dbOperate; if (aliases.Length == 0) { tableName = GetTableName(obj, null); executeSql = string.Format(sql, tableName); dbOperate = DbProxy.Create(null, type); executeCnt = dbOperate.ExecuteNonQuery(executeSql, prams); if (executeCnt != 1) { string jsonPrams = JsonConvert.SerializeObject(prams); LogProxy.Error(string.Format(SAVEFAIL, executeSql, jsonPrams), true); } } else { foreach (string alias in aliases) { tableName = GetTableName(obj, alias); executeSql = string.Format(sql, tableName); dbOperate = DbProxy.Create(alias, type); executeCnt = dbOperate.ExecuteNonQuery(executeSql, prams); if (executeCnt != 1) { string jsonPrams = JsonConvert.SerializeObject(prams); LogProxy.Error(string.Format(SAVEFAIL, executeSql, jsonPrams), true); } } } }
private static IMyDbParameter[] InsertParametersBuilder(SRO obj) { List <IMyDbParameter> prams = new List <IMyDbParameter>(); IMyPropertyInfo[] myPropertys = PropertyInfoProxy.GetProperties(obj.GetType()); foreach (IMyPropertyInfo property in myPropertys) { if (property.IsSave == false) {//判断是否保存 continue; } object pValue = property.GetValue(obj); if (pValue == null) { pValue = DBNull.Value; } prams.Add(ParameterBuilder(property, pValue)); } return(prams.ToArray()); }
public static string InsertBuilder(SRO obj, out IMyDbParameter[] prams) { prams = InsertParametersBuilder(obj); return(GetInsertSql(obj.GetType())); }