public Tuple <string, IEnumerable <DbSimpleParameter> > GetInsertCommandParameters <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}"); } List <DbSimpleParameter> parameters = new List <DbSimpleParameter>(); var strBuilderSql = new StringBuilder($"insert into [{entityName}] ("); foreach (var item in allProperties) { if (keyName == item && !includeKey) { continue; } strBuilderSql.Append($"[{item.Name}]"); if (item != allProperties.Last()) { strBuilderSql.Append(", "); } else { strBuilderSql.Append(") values ("); } } //Values foreach (var item in allProperties) { if (keyName == item && !includeKey) { continue; } strBuilderSql.Append($"@{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(")"); } } var sql = strBuilderSql.ToString(); return(new Tuple <string, IEnumerable <DbSimpleParameter> >(sql, parameters)); }
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)); }