protected string GenSaveSql(T data, Expression <Func <T, bool> > exp, DbCommand cmd, IDbProperty idfn) { var sql = $"UPDATE {this.Sql.Tablename(true)} SET "; var hasField = false; //var idfn = this.GetIdField(); foreach (var prop in this.Sql.AllowedProps.Values) { if (hasField) { sql += " , "; } else { hasField = true; } if (prop.Field.Name == idfn.Field.Name) { continue; } sql += this.Sql.DbTrait.SqlFieldname(prop.Field.Name) + "="; switch (this.Sql.DbTrait.ParametricKind) { case SqlParametricKinds.At: sql += "@" + prop.Field.Name; break; case SqlParametricKinds.Question: sql += "?"; break; default: sql += SQL <T> .SqlValue(prop.GetValue(data), prop.Field.Nullable, prop.DefaultValue); break; } } sql += " WHERE " + this.Sql.DbTrait.SqlFieldname(idfn.Field.Name) + "="; switch (this.Sql.DbTrait.ParametricKind) { case SqlParametricKinds.At: sql += "@" + idfn; break; case SqlParametricKinds.Question: sql += "?"; break; default: sql += SQL <T> .SqlValue(idfn.GetValue(data), false, idfn.DefaultValue); break; } if (exp != null) { var where = base.SqlWhere(exp, cmd, new WhereOpts() { }); sql += " AND " + where; } return(sql); }
protected string GenUpdateSql(T data) { var sql = $"UPDATE {this.Sql.Tablename(true)} SET "; var hasField = false; foreach (var prop in this.Sql.AllowedProps.Values) { if (hasField) { sql += " , "; } else { hasField = true; } sql += this.Sql.DbTrait.SqlFieldname(prop.Field.Name) + "="; switch (this.Sql.DbTrait.ParametricKind) { case SqlParametricKinds.At: sql += "@" + prop.Field.Name; break; case SqlParametricKinds.Question: sql += "?"; break; default: sql += SQL <T> .SqlValue(prop.GetValue(data), prop.Field.Nullable, prop.DefaultValue); break; } } return(sql); }
DbCommand BuildCommand(object id, DbConnection conn) { var cmd = conn.CreateCommand(); if (this.Sql.DbTrait.ParametricKind == SqlParametricKinds.Value) { cmd.CommandText = this.SelectSql + $"'{SQL<T>.SqlValue(id,false)}'"; } else { cmd.CommandText = this.SelectSql; var par = cmd.CreateParameter(); par.ParameterName = "@p0"; par.DbType = this.Primary.Field.DbType; par.Value = id; cmd.Parameters.Add(par); } cmd.CommandType = System.Data.CommandType.Text; cmd.Connection = conn; return(cmd); }
DbCommand BuildCommand(object id, Expression <Func <T, bool> > criteria, DbConnection conn) { var cmd = conn.CreateCommand(); if (this.Sql.DbTrait.ParametricKind == SqlParametricKinds.Value) { cmd.CommandText = this.SelectSql + $"'{SQL<T>.SqlValue(id, false)}'"; if (criteria != null) { var where = base.SqlWhere(criteria, cmd, new WhereOpts() { ValueEmbeded = true }); cmd.CommandText += " AND " + where; } } else { cmd.CommandText = this.SelectSql; if (criteria != null) { var where = base.SqlWhere(criteria, cmd, new WhereOpts() { ValueEmbeded = true }); cmd.CommandText += " AND " + where; } var par = cmd.CreateParameter(); par.ParameterName = "@p_Delete_IdField_PAR0"; par.DbType = this.Sql.DbClass.PrimaryProperty.Field.DbType; par.Value = id; cmd.Parameters.Add(par); } cmd.CommandType = System.Data.CommandType.Text; cmd.Connection = conn; return(cmd); }
string GenSql(object entity) { var sql_fields = ""; var sql_values = ""; foreach (var pair in this.Sql.AllowedProps) { var prop = pair.Value; var fname = this.Sql.DbTrait.SqlFieldname(prop.Field.Name); if (sql_fields != string.Empty) { sql_fields += ","; } if (sql_values != string.Empty) { sql_values += ","; } sql_fields += fname; switch (this.Sql.DbTrait.ParametricKind) { case SqlParametricKinds.At: sql_values += "@" + fname; break; case SqlParametricKinds.Question: sql_values += "?"; break; default: var nullable = prop.Nullable; var fieldAttr = prop.GetAttribute <DbFieldAttribute>(); if (fieldAttr != null && fieldAttr.IsNullable) { nullable = true; } var hasValue = prop.HasValue(entity); if (!hasValue) { if (nullable) { sql_values += "NULL"; } else { sql_values += SQL <T> .SqlValue(prop.DefaultValue, false, prop.DefaultValue) ?? "''"; } } else { var val = prop.EnsureValue(entity); if (val == null) { sql_values += "''"; } sql_values += SQL <T> .SqlValue(val.ToString()); } break; } } return("(" + sql_fields + ") VALUES(" + sql_values + ")"); }