public string ToQueryText(IDataProvider dataProvider, ref int uniqueMarker) { if (dataProvider == null) { throw new ArgumentNullException("dataRepository", "Cannot create query part without a schema from the data repository."); } IColumn column = dataProvider.Schema.FindColumn(this.TableName, this.ColumnName); if (column == null) throw new QueryGenerationException("Could not find column schema information for the constraint: " + this.TableName + "." + this.ColumnName); StringBuilder queryText = new StringBuilder(128); this.Parameters.Clear(); // start with the opening paren if (this.Negate) { queryText.Append("NOT ("); } else { queryText.Append("("); } if (this.Comparison == ConstraintComparison.Between) { if (this.StartValue == null || this.EndValue == null) throw new QueryGenerationException("Start or End value for a BETWEEN constraint is null"); // need to create the parameters IDataParameter start = dataProvider.CreateParameter(uniqueMarker, column, this.StartValue); uniqueMarker++; //always increment after using this.Parameters.Add(start); IDataParameter end = dataProvider.CreateParameter(uniqueMarker, column, this.EndValue); uniqueMarker++; //always increment after using this.Parameters.Add(end); queryText.Append(dataProvider.QualifyColumnName(column)); queryText.Append(SqlFragment.BETWEEN); queryText.Append(start.ParameterName); queryText.Append(SqlFragment.AND); queryText.Append(end.ParameterName); } else if (this.Comparison == ConstraintComparison.In || this.Comparison == ConstraintComparison.NotIn) { } else { queryText.Append(dataProvider.QualifyColumnName(column)); queryText.Append(GetComparisonOperator(this.Comparison)); if (this.Comparison == ConstraintComparison.Is || this.Comparison == ConstraintComparison.IsNot) { if (this.ParameterValue == null || this.ParameterValue == DBNull.Value) { queryText.Append("NULL"); } } else { IDataParameter value = dataProvider.CreateParameter(uniqueMarker, column, this.ParameterValue); uniqueMarker++; //always increment after using this.Parameters.Add(value); queryText.Append(value.ParameterName); } } // add ending paren queryText.Append(")"); return queryText.ToString(); }