public string GetUpdateCommand <T>(T obj) where T : class, new() { var allProperties = ScriptCommon.GetValidProperty <T>(); var entityName = GetEntityName <T>(); var keyProperty = GetKeyProperty(allProperties); if (keyProperty == null) { throw new Exception($"Key column not found for {entityName}"); } var strBuilderSql = new StringBuilder($"update [{entityName}] set "); foreach (var item in allProperties) { if (keyProperty == item) { continue; } strBuilderSql.Append($"[{item.Name}]={DataFormatter.GetValue(item, obj, this.DbServerType)}"); if (item != allProperties.Last()) { strBuilderSql.Append(", "); } } strBuilderSql.Append($" where {keyProperty.Name}={DataFormatter.GetValue(keyProperty, obj, this.DbServerType)}"); var sql = strBuilderSql.ToString(); return(sql); }
public string GetInsertCommand <T>(T obj, bool includeKey = false) where T : class, new() { var allProperties = ScriptCommon.GetValidProperty <T>(); var entityName = GetEntityName <T>(); var keyName = GetKeyProperty(allProperties.ToArray <PropertyInfo>()); if (keyName == null && includeKey) { throw new Exception($"Key column not found for {entityName}"); } var strBuilderSql = new StringBuilder($"insert into [{entityName}] ("); foreach (var item in allProperties) { if (keyName == item && !includeKey && IsIdentity(item)) { continue; } strBuilderSql.Append($"[{item.Name}]"); if (item != allProperties.Last()) { strBuilderSql.Append(", "); } else { strBuilderSql.Append(") values ("); } } foreach (var item in allProperties) { if (keyName == item && !includeKey && IsIdentity(item)) { continue; } strBuilderSql.Append($"{DataFormatter.GetValue(item, obj, this.DbServerType)}"); if (item != allProperties.Last()) { strBuilderSql.Append(", "); } else { strBuilderSql.Append(")"); } } var sql = strBuilderSql.ToString(); if (this.DbServerType == DbServerType.SqlServer) { sql = "set dateformat YMD;" + sql; } return(sql); }
Tuple <string, IEnumerable <DbSimpleParameter> > IScriptBuilder.GetUpdateCommandParameters <T>(T obj) { var allProperties = ScriptCommon.GetValidProperty <T>(); var entityName = GetEntityName <T>(); var keyProperty = GetKeyProperty(allProperties); if (keyProperty == null) { throw new Exception($"Key column not found for {entityName}"); } List <DbSimpleParameter> parameters = new List <DbSimpleParameter>(); var strBuilderSql = new StringBuilder($"update [{entityName}] set "); foreach (var item in allProperties) { if (keyProperty == item) { continue; } strBuilderSql.Append($"[{item.Name}]=@{item.Name}"); parameters.Add(new DbSimpleParameter($"@{item.Name}", GetParamType(item), GetParamSize(item), DataFormatter.GetValueForParameter(item, obj, this.DbServerType))); if (item != allProperties.Last()) { strBuilderSql.Append(", "); } else { strBuilderSql.Append(" "); } } strBuilderSql.Append($" where [{keyProperty.Name}]={DataFormatter.GetValue(keyProperty, obj, this.DbServerType)}"); var sql = strBuilderSql.ToString(); return(new Tuple <string, IEnumerable <DbSimpleParameter> > (sql, parameters)); }