Exemple #1
0
        private string GenerateSetExpressions(ParameterFactory parameterFactory)
        {
            var expressions = new List <string>();

            foreach (var setExpression in setExpressions)
            {
                var existingIndex = expressions.FindIndex(str => str.StartsWith(setExpression.GetColumnName()));
                if (existingIndex >= 0)
                {
                    expressions.RemoveAt(existingIndex);
                }
                var columnName = setExpression.GetColumnName();
                if (setExpression.IsComputedField())
                {
                    throw new ComputedFieldExplicitlySetInUpdateException("Cannot update field with IsComputedAttribute: " + columnName);
                }
                expressions.Add(columnName + " = " + parameterFactory.Create(setExpression.Value));
            }

            return(string.Join(", ", expressions));
        }
Exemple #2
0
        public SqlQuery ToQuery(IEnumerable <TableType> rows)
        {
            var parameterFactory = new ParameterFactory();
            var query            = "";

            var rowList = rows.ToList();

            foreach (var row in rowList)
            {
                var tableName      = tableInformation.GetSchemaAndTableName();
                var columns        = tableInformation.GetColumnNames(excludeIdentityColumns: true, excludeComputedFields: true, excludeIgnoredFields: true);
                var values         = tableInformation.GetColumnValues(row, excludeIdentityColumns: true, excludeComputedFields: true, excludeIgnoredFields: true);
                var identityColumn = tableInformation.GetIdentityColumn();
                query += "INSERT INTO " + tableName + " (" + string.Join(", ", columns) + ") SELECT " + string.Join(", ", values.Select(parameterFactory.Create)) + "; ";
                if (identityColumn != null && rowList.Count == 1)
                {
                    query += "SELECT SCOPE_IDENTITY();";
                }
            }

            return(new SqlQuery(query, parameterFactory.GetParameters()));
        }
 internal WhereExpressionVisitor(ParameterFactory parameterFactory)
 {
     this.parameterFactory = parameterFactory;
     stringBuilder         = new StringBuilder();
     operatorStack         = new Stack <ExpressionType>();
 }