public ISQLinqResult ToSQL(int existingParameterCount = 0, string parameterNamePrefix = SqlExpressionCompiler.DefaultParameterNamePrefix) { int _parameterNumber = existingParameterCount; _parameterNumber++; var type = typeof(T).GetTypeInfo(); var parameters = new Dictionary <string, object>(); var fields = new Dictionary <string, string>(); // Get Table / View Name var tableName = this.GetTableName(); foreach (var p in type.GetProperties()) { var ignoreField = false; var fieldName = p.Name; var attr = p.GetCustomAttributes(typeof(SQLinqColumnAttribute), true).FirstOrDefault() as SQLinqColumnAttribute; if (attr != null) { ignoreField = attr.Ignore; if (!string.IsNullOrEmpty(attr.Column)) { fieldName = attr.Column; } } if (!ignoreField) { var parameterName = this.Dialect.ParameterPrefix + parameterNamePrefix + _parameterNumber.ToString(); fields.Add(fieldName, parameterName); //parameters.Add(parameterName, p.GetValue(this.Data, null)); _parameterNumber++; } } _parameterNumber = existingParameterCount + parameters.Count; this.compiler = new SqlExpressionCompiler(this.Dialect, _parameterNumber, parameterNamePrefix); // **************************************************** // **** WHERE ***************************************** SqlExpressionCompilerResult whereResult = this.ToSQL_Where(_parameterNumber, parameterNamePrefix, parameters); // ****************************** // **** SET ********************* var set = this.ToSQL_UpdateSet(0, parameterNamePrefix, parameters); return(new SQLinqUpdateResult(this.Dialect) { Table = tableName, Where = whereResult?.SQL, Update = set?.SQL, Fields = fields, Parameters = parameters }); }
private SqlExpressionCompilerResult ToSQL_Where(int parameterNumber, string parameterNamePrefix, IDictionary <string, object> parameters) { SqlExpressionCompilerResult whereResult = null; if (this.Expressions.Count > 0) { whereResult = this.compiler.Compile(this.Expressions); foreach (var item in whereResult.Parameters) { parameters.Add(item.Key, item.Value); } } return(whereResult); }