protected virtual void SetUpdateParameters(TCmd cmd, bool preserveFields) { foreach (KeyValuePair <string, object> kvp in SqlSets) { if (preserveFields && PreservedFields.Contains(kvp.Key)) { continue; } TParam param = new TParam(); param.ParameterName = "@" + ParamUniqueKey + "S_" + kvp.Key; param.Value = kvp.Value ?? DBNull.Value; cmd.Parameters.Add(param); } }
protected virtual TCmd BuildUpdate() { if (SqlSets.Count == 0) { return(null); } TCmd cmd = new TCmd(); cmd.CommandText = "UPDATE " + SqlTable + " SET " + SqlSets.Where(kvp => !PreservedFields.Contains(kvp.Key)) .Select(kvp => QuoteName(kvp.Key) + " = @" + ParamUniqueKey + "S_" + kvp.Key) .Join(", ") + (SqlConditionals.Count == 0 ? "" : " WHERE " + SqlConditionals.Select(sc => sc.Replace("@", "@" + ParamUniqueKey)).Join(" AND ")); SetParameters(cmd); SetUpdateParameters(cmd, true); return(cmd); }