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; }
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); }
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 + "]')"); }
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); }
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; }
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; }
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 + "]')"); }
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; }
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); }
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); } }
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; }
//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"); }
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); }
public SqlExpressions.IAliasedExpression Join(Mapping.Reference rm, out SqlExpressions.TableAlias firstAlias) { throw new NotImplementedException(); }
public override NLinq.Expressions.Expression FindTable(SqlExpressions.Mapping.Table table) { throw new NotImplementedException(); }
public DiscriminatorMutator(SqlExpressions.Mapping.EntitySourceExpression ese) { this.ese = ese; }
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 }; }
public override SqlExpressions.IDbExpression FindFK(string schema, string fk, SqlExpressions.Mapping.Table table) { throw new NotImplementedException(); }
public SqlExpressions.CaseTestExpression[] TestCases(string type, out SqlExpressions.TableAlias alias) { throw new NotImplementedException(); }
public SqlExpressions.IDbStatement Create(Mapping.Reference reference, SqlExpressions.ValuedParameter childId) { return mapper.Create(reference, childId); }
public virtual Evaluant.Uss.SqlExpressions.IAliasedExpression Join(Mapping.Reference rm, out SqlExpressions.TableAlias firstAlias) { return mapper.Join(rm, out firstAlias); }
public SqlExpressions.IDbStatement Create(Mapping.Reference reference, SqlExpressions.ValuedParameter childId) { throw new NotImplementedException(); }
public void Create(Mapping.Entity entity, SqlExpressions.InsertStatement insert) { mapper.Create(entity, insert); }
public void Create(Mapping.Entity entity, SqlExpressions.InsertStatement insert) { throw new NotImplementedException(); }
public System.Data.IDataParameter GetParameter(System.Data.IDbCommand command, SqlExpressions.ValuedParameter parameter) { throw new NotImplementedException(); }
public override SqlExpressions.IDbExpression Visit(SqlExpressions.EntityExpression item) { currentEntity = model.Entities[item.Type]; return item; }
public SqlExpressions.CaseTestExpression[] TestCases(string p, SqlExpressions.TableAlias currentAlias) { throw new NotImplementedException(); }
public override SqlExpressions.IAliasedExpression Visit(SqlExpressions.SelectStatement item) { hasSelect = true; return base.Visit(item); }