Exemple #1
0
        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
            });
        }
Exemple #2
0
        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);
        }