protected override Expression VisitCreateIndex(SqlCreateIndexExpression createIndexExpression) { var predicate = createIndexExpression .Columns .Select(c => (Expression) new SqlFunctionCallExpression(typeof(bool), SqlFunction.IsNotNull, c.Column)) .Aggregate(Expression.And); return(createIndexExpression.ChangeWhere(createIndexExpression.Where == null ? predicate : Expression.And(createIndexExpression.Where, predicate))); }
protected virtual Expression VisitCreateIndex(SqlCreateIndexExpression createIndexExpression) { var table = (SqlTableExpression)Visit(createIndexExpression.Table); var columns = VisitExpressionList(createIndexExpression.Columns); var includedColumns = VisitExpressionList(createIndexExpression.IncludedColumns); var where = Visit(createIndexExpression.Where); if (columns != createIndexExpression.Columns || includedColumns != createIndexExpression.IncludedColumns || table != createIndexExpression.Table || where != createIndexExpression.Where) { return(new SqlCreateIndexExpression(createIndexExpression.IndexName, table, createIndexExpression.Unique, createIndexExpression.IndexType, createIndexExpression.IfNotExist, columns, includedColumns, where, createIndexExpression.Clustered)); } return(createIndexExpression); }
protected override Expression VisitCreateIndex(SqlCreateIndexExpression createIndexExpression) { if (createIndexExpression.Where != null && this.explicitIndexConditionOverridesNullAnsiCompliance) { return(createIndexExpression); } if (!(createIndexExpression.Unique || this.fixNonUniqueIndexesAsWell)) { return(createIndexExpression); } var predicate = createIndexExpression .Columns .Select(c => (Expression) new SqlFunctionCallExpression(typeof(bool), SqlFunction.IsNotNull, c.Column)) .Aggregate(Expression.And); return(createIndexExpression.ChangeWhere(createIndexExpression.Where == null ? predicate : Expression.And(createIndexExpression.Where, predicate))); }
protected override Expression VisitCreateIndex(SqlCreateIndexExpression createIndexExpression) { this.Write("CREATE "); if (createIndexExpression.Unique) { this.Write("UNIQUE "); } if (createIndexExpression.IfNotExist) { this.Write("IF NOT EXIST "); } this.Write("INDEX "); this.WriteQuotedIdentifier(createIndexExpression.IndexName); this.Write(" ON "); this.Visit(createIndexExpression.Table); this.Write("("); this.WriteDeliminatedListOfItems(createIndexExpression.Columns, c => this.Visit(c)); this.WriteLine(");"); return(createIndexExpression); }
protected override Expression VisitCreateIndex(SqlCreateIndexExpression createIndexExpression) { return(base.VisitCreateIndex(createIndexExpression.ChangeWhere(null))); }
protected virtual Expression VisitCreateIndex(SqlCreateIndexExpression createIndexExpression) { return(createIndexExpression); }
protected override Expression VisitCreateTable(SqlCreateTableExpression createTableExpression) { var retval = createTableExpression; var organizationIndex = createTableExpression.OrganizationIndex; if (organizationIndex == null) { return(createTableExpression); } // No organization index - remove from primary key if (organizationIndex.Columns == null) { try { this.makeUnclustered = true; retval = ((SqlCreateTableExpression)base.VisitCreateTable(createTableExpression)) .ChangeOrganizationIndex(null); return(retval); } finally { this.makeUnclustered = false; } } // Organization index the same as primary key so just leave with SQL server default if (createTableExpression .TableConstraints .Where(c => c.PrimaryKey) .SelectMany(c => c.ColumnNames) .OrderBy(c => c) .SequenceEqual(organizationIndex.Columns.Select(c => c.Column.Name).OrderBy(c => c))) { retval = ((SqlCreateTableExpression)base.VisitCreateTable(createTableExpression)) .ChangeOrganizationIndex(null); return(retval); } // Custom organization index try { this.makeUnclustered = true; retval = ((SqlCreateTableExpression)base.VisitCreateTable(createTableExpression)) .ChangeOrganizationIndex(null); } finally { this.makeUnclustered = false; } var indexExpression = new SqlCreateIndexExpression(organizationIndex.IndexName, createTableExpression.Table, false, IndexType.Default, false, organizationIndex.Columns, null, null, true); if (this.additionalStatements == null) { this.additionalStatements = new List <Expression>(); } this.additionalStatements.Add(indexExpression); return(retval); }