Exemplo n.º 1
0
 public override SqlExpressions.IAliasedExpression Visit(SqlExpressions.RowNumber item)
 {
     removeColumnAlias = true;
     var result = base.Visit(item);
     removeColumnAlias = false;
     return result;
 }
 public override SqlExpressions.FromClause Visit(SqlExpressions.FromClause item)
 {
     bool wasInFrom = inFrom;
     inFrom = true;
     var result = base.Visit(item);
     inFrom = wasInFrom;
     return result;
 }
        public override SqlExpressions.IAliasedExpression Visit(SqlExpressions.SelectStatement item)
        {
            SqlExpressions.SelectStatement oldItem = item;
            var columnToReplaceWith = this.columnToReplaceWith;
            if (this.columnToReplaceWith != null && inFrom && item.Top == 0)
            {
                replacedSelect = item = (SqlExpressions.SelectStatement)updater.Update(item, new SqlExpressions.IAliasedExpression[] { columnToReplaceWith }, item.From, item.Where, item.OrderBy, item.Alias);

            }
            this.columnToReplaceWith = null;
            int n = 0;
            foreach (var column in oldItem.Columns)
            {
                n++;
                this.columnToReplaceWith = column;
            }

            if (n > 1 ||
                this.columnToReplaceWith == null ||
                this.columnToReplaceWith.DbExpressionType != SqlExpressions.DbExpressionType.Aggregate)
            {
                if (this.columnToReplaceWith != null)
                {
                    if (this.columnToReplaceWith.DbExpressionType == SqlExpressions.DbExpressionType.Column)
                    {
                        var column = this.columnToReplaceWith as SqlExpressions.ComplexColumnExpression;
                        if (column != null && ((SqlExpressions.IDbExpression)column.Expression).DbExpressionType != SqlExpressions.DbExpressionType.Value)
                        {
                            this.columnToReplaceWith = null;
                            replacedSelect = null;
                            item = oldItem;
                        }
                        else if (this.columnToReplaceWith.DbExpressionType != SqlExpressions.DbExpressionType.Aggregate)
                        {
                            this.columnToReplaceWith = null;
                            replacedSelect = null;
                            item = oldItem;
                        }
                    }
                    else
                    {
                        this.columnToReplaceWith = null;
                        replacedSelect = null;
                        item = oldItem;
                    }
                }
            }


            var result = base.Visit(item);
            this.columnToReplaceWith = columnToReplaceWith;
            if (replacedSelect != null && item != replacedSelect)
            {
                result = replacedSelect;
                replacedSelect = null;
            }
            return result;
        }
Exemplo n.º 4
0
 public override SqlExpressions.IAliasedExpression Visit(SqlExpressions.ColumnExpression item)
 {
     if (removeColumnAlias && item.ColumnAlias != null)
     {
         item.ColumnAlias = null;
         return new SqlExpressions.ColumnExpression(item.Alias, item.ColumnName);
     }
     return base.Visit(item);
 }
Exemplo n.º 5
0
        public override NLinq.Expressions.Expression FindTable(SqlExpressions.Mapping.Table table)
        {
            if (string.IsNullOrEmpty(table.Schema))
                return new SqlExpressions.HardCodedExpression(
                    @"SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'" + table.TableName + "')");

            return new SqlExpressions.HardCodedExpression(
                @"SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'[" + table.Schema + "].[" + table.TableName + "]')");

        }
Exemplo n.º 6
0
 public override SqlExpressions.IAliasedExpression Visit(SqlExpressions.ComplexColumnExpression item)
 {
     if (item.Expression != null && ((SqlExpressions.IDbExpression)item.Expression).DbExpressionType == SqlExpressions.DbExpressionType.Case)
     {
         if (mapping.Model.Entities[(string)((SqlExpressions.Constant)((SqlExpressions.CaseExpression)item.Expression).DefaultResult).Value].Inherit == null)
         {
             return updater.Update(item, item.Alias, null, item.ColumnAlias);
         }
     }
     return base.Visit(item);
 }
Exemplo n.º 7
0
        public override SqlExpressions.IDbExpression Visit(SqlExpressions.Constant item)
        {
            if (item.Value == null)
                throw new NotSupportedException(string.Format("The value for the field {0} has to be not null to determine the value type", lastField.ColumnName));


            driver.GetTypeInformation(new Model.Attribute(lastField.ColumnName.Text, item.Value.GetType()), new Mapping.Attribute(lastField.ColumnName.Text) { Field = lastField });
            lastField.DefaultValue = item.Value.ToString();
            lastField.Size = lastField.DefaultValue.Length;

            return item;
        }
Exemplo n.º 8
0
Arquivo: Driver.cs Projeto: npenin/uss
 public IDataParameter GetParameter(IDbCommand command, SqlExpressions.ValuedParameter parameter)
 {
     var dbParameter = command.CreateParameter();
     dbParameter.DbType = parameter.Type;
     dbParameter.Direction = parameter.Direction;
     dbParameter.ParameterName = parameter.Name;
     dbParameter.Precision = parameter.Precision;
     dbParameter.Scale = parameter.Scale;
     dbParameter.Size = parameter.Size;
     if (parameter.Type == DbType.Guid && parameter.Value != null && parameter.Value is string)
         dbParameter.Value = new Guid((string)parameter.Value);
     else
         dbParameter.Value = parameter.Value;
     return dbParameter;
 }
Exemplo n.º 9
0
        public override SqlExpressions.IDbExpression FindFK(string schema, string fk, SqlExpressions.Mapping.Table table)
        {
            if (string.IsNullOrEmpty(table.Schema))
                return new SqlExpressions.HardCodedExpression(
                @"SELECT 1 
                  FROM sys.foreign_keys 
                  WHERE object_id = OBJECT_ID(N'[" + schema + "].[" + fk + @"]') 
                  AND parent_object_id=OBJECT_ID(N'" + table.TableName + "')");

            return new SqlExpressions.HardCodedExpression(
            @"SELECT 1 
                  FROM sys.foreign_keys 
                  WHERE object_id = OBJECT_ID(N'[" + schema + "].[" + fk + @"]') 
                  AND parent_object_id=OBJECT_ID(N'[" + table.Schema + "].[" + table.TableName + "]')");
        }
Exemplo n.º 10
0
 public override SqlExpressions.IAliasedExpression Visit(SqlExpressions.ComplexColumnExpression item)
 {
     writer.Write(' ');
     if (item.ColumnAlias != null)
     {
         Visit(item.ColumnAlias);
         writer.Write(" = ");
     }
     if (item.Alias != null)
     {
         Visit(item.Alias);
         writer.Write(".");
     }
     Visit(item.Expression);
     return item;
 }
Exemplo n.º 11
0
        public override SqlExpressions.IAliasedExpression Visit(SqlExpressions.SelectStatement item)
        {
            int n = 0;
            SqlExpressions.IAliasedExpression lastColumn = null;
            foreach (var column in item.Columns)
            {
                n++;
                lastColumn = column;
            }
            if (n == 1 && lastColumn != null && lastColumn.DbExpressionType == SqlExpressions.DbExpressionType.Aggregate)
            {
                item.OrderBy = null;
            }

            return base.Visit(item);
        }
Exemplo n.º 12
0
 public override SqlExpressions.IAliasedExpression Visit(SqlExpressions.SelectStatement item)
 {
     bool wasInSelect = inSelect;
     if (!inSelect)
     {
         int n = 0;
         foreach (var column in item.Columns)
         {
             n++;
             lastColumn = column;
         }
         if (n == 1 && (lastColumn.DbExpressionType == SqlExpressions.DbExpressionType.Aggregate || lastColumn.DbExpressionType == DbExpressionType.Function || lastColumn.DbExpressionType == DbExpressionType.Column && ((ColumnExpression)lastColumn).Alias == null))
         {
             inSelect = true;
             if (item.Where != null || item.From.Count != 1 || item.From[0].DbExpressionType != DbExpressionType.Select || ((SelectStatement)item.From[0]).Top > 0)
                 lastColumn = null;
             item = (SqlExpressions.SelectStatement)base.Visit(item);
             if (lastColumn != null)
                 return item.From[0];
             inSelect = wasInSelect;
         }
         return item;
     }
     else
     {
         List<SqlExpressions.IAliasedExpression> columns = new List<SqlExpressions.IAliasedExpression>();
         foreach (var column in item.Columns)
         {
             if (column.DbExpressionType == SqlExpressions.DbExpressionType.Column && column is SqlExpressions.ComplexColumnExpression)
                 columns.Add(column);
         }
         if (columns.Count <= 1)
         {
             if (columns.Count == 1 && (((SqlExpressions.IDbExpression)((SqlExpressions.ComplexColumnExpression)columns[0]).Expression).DbExpressionType == SqlExpressions.DbExpressionType.Case ||
                 ((SqlExpressions.IDbExpression)((SqlExpressions.ComplexColumnExpression)columns[0]).Expression).DbExpressionType == SqlExpressions.DbExpressionType.Value))
             {
                 columns.RemoveAt(0);
             }
             if (lastColumn != null)
                 columns.Add(lastColumn);
             else
                 columns.Add(new ComplexColumnExpression(null, new Constant(1, System.Data.DbType.Int32), "a"));
         }
         return updater.Update(item, columns, item.From, item.Where, item.OrderBy, item.Alias);
     }
 }
Exemplo n.º 13
0
        public override string Render(SqlExpressions.IDbExpression expression)
        {
            type = Evaluant.Uss.SqlExpressions.DbExpressionType.Unknown;
            TraceHelper.TraceEvent(SqlMapperProvider.TraceSource, System.Diagnostics.TraceEventType.Start, 1, "Rendering");
            string sql = base.Render(expression);
            TraceHelper.TraceEvent(SqlMapperProvider.TraceSource, System.Diagnostics.TraceEventType.Stop, 1, "Rendering");
            TraceHelper.TraceData(SqlMapperProvider.TraceSource, System.Diagnostics.TraceEventType.Information, (int)type, sql);
#if TRACE
            SqlExpressions.IDbStatement statement = expression as SqlExpressions.IDbStatement;
            if (statement != null)
            {
                foreach (SqlExpressions.ValuedParameter parameter in statement.Parameters.Values)
                    TraceHelper.TraceData(SqlMapperProvider.TraceSource, System.Diagnostics.TraceEventType.Information, (int)type, parameter.Name + "=" + parameter.Value);
            }
#endif
            return sql;
        }
Exemplo n.º 14
0
Arquivo: Db2.cs Projeto: npenin/uss
        //public override int MaxAnsiStringSize
        //{
        //    get { return 32700; }
        //}

        //public override int MaxBinarySize
        //{
        //    get { return 32700; }
        //}

        //public override int MaxBinaryBlobSize
        //{
        //    get { return 2147483647; }
        //}

        //public override int MaxStringClobSize
        //{
        //    get { return 32700; }
        //}

        //public override int MaxStringSize
        //{
        //    get { return 32700; }
        //}

        //public override int GetMaxIdentifierLength()
        //{
        //    return 21;
        //}

        public override void Visit(SqlExpressions.Mapping.Field field)
        {
            if (field.DbType == DbType.Guid)
                field.Size = 36;
            writer.Write(beginEscape);
            writer.Write(field.ColumnName);
            writer.Write(endEscape);
            writer.Write(" ");
            writer.Write(beginEscape);
            TypeName(field.DbType, field.Size);
            writer.Write(endEscape);
            if (field.Precision != 0 && field.Scale != 0)
                writer.Write("({0}, {1}) ", field.Precision, field.Scale);
            if (field.Size != 0)
                writer.Write("({0})", field.Size);
            if (field.IsIdentity)
                writer.Write(" IDENTITY(START WITH {0}, INCREMENT BY {1}) ", 1, 1);
            writer.Write(field.IsNullable ? "NULL" : "NOT NULL");
        }
Exemplo n.º 15
0
 public override SqlExpressions.IDbExpression Visit(SqlExpressions.EntityExpression item)
 {
     if (item.Type != null && item.Type.StartsWith("System."))
     {
         if (item.Expression.ExpressionType == NLinq.Expressions.ExpressionTypes.Constant)
         {
             IEnumerable list = ((ValueExpression)item.Expression).Value as IEnumerable;
             List<IAliasedExpression> selects = new List<IAliasedExpression>();
             foreach (var value in list)
             {
                 var select = new SelectStatement(null);
                 select.Columns = new[]{
                     new ComplexColumnExpression(null, new Constant(value, driver.GetDbType(value.GetType())), new Identifier("b"))
                 };
                 selects.Add(select);
             }
             if (selects.Count == 1)
                 return selects[0];
             return new EntityExpression(null) { Expression = new Union(new TableAlias(), selects.ToArray()) };
         }
     }
     return base.Visit(item);
 }
Exemplo n.º 16
0
 public SqlExpressions.IAliasedExpression Join(Mapping.Reference rm, out SqlExpressions.TableAlias firstAlias)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 17
0
Arquivo: Oracle.cs Projeto: npenin/uss
 public override NLinq.Expressions.Expression FindTable(SqlExpressions.Mapping.Table table)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 18
0
 public DiscriminatorMutator(SqlExpressions.Mapping.EntitySourceExpression ese)
 {
     this.ese = ese;
 }
Exemplo n.º 19
0
 public override SqlExpressions.IAliasedExpression Visit(SqlExpressions.Exists item)
 {
     if (hasSelect)
         return base.Visit(item);
     return new SelectStatement(new TableAlias(), new IAliasedExpression[] { new ComplexColumnExpression(null, new Constant(1, System.Data.DbType.Int32)) }, null, null, new NLinq.Expressions.WhereClause(item)) { Top = 1 };
 }
Exemplo n.º 20
0
Arquivo: Oracle.cs Projeto: npenin/uss
 public override SqlExpressions.IDbExpression FindFK(string schema, string fk, SqlExpressions.Mapping.Table table)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 21
0
 public SqlExpressions.CaseTestExpression[] TestCases(string type, out SqlExpressions.TableAlias alias)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 22
0
 public SqlExpressions.IDbStatement Create(Mapping.Reference reference, SqlExpressions.ValuedParameter childId)
 {
     return mapper.Create(reference, childId);
 }
Exemplo n.º 23
0
 public virtual Evaluant.Uss.SqlExpressions.IAliasedExpression Join(Mapping.Reference rm, out SqlExpressions.TableAlias firstAlias)
 {
     return mapper.Join(rm, out firstAlias);
 }
Exemplo n.º 24
0
 public SqlExpressions.IDbStatement Create(Mapping.Reference reference, SqlExpressions.ValuedParameter childId)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 25
0
 public void Create(Mapping.Entity entity, SqlExpressions.InsertStatement insert)
 {
     mapper.Create(entity, insert);
 }
Exemplo n.º 26
0
 public void Create(Mapping.Entity entity, SqlExpressions.InsertStatement insert)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 27
0
Arquivo: Script.cs Projeto: npenin/uss
 public System.Data.IDataParameter GetParameter(System.Data.IDbCommand command, SqlExpressions.ValuedParameter parameter)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 28
0
 public override SqlExpressions.IDbExpression Visit(SqlExpressions.EntityExpression item)
 {
     currentEntity = model.Entities[item.Type];
     return item;
 }
Exemplo n.º 29
0
 public SqlExpressions.CaseTestExpression[] TestCases(string p, SqlExpressions.TableAlias currentAlias)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 30
0
 public override SqlExpressions.IAliasedExpression Visit(SqlExpressions.SelectStatement item)
 {
     hasSelect = true;
     return base.Visit(item);
 }