/// <summary> /// Render a SqlString for the expression. /// </summary> /// <param name="criteria"></param> /// <param name="criteriaQuery"></param> /// <param name="enabledFilters"></param> /// <returns> /// A SqlString that contains a valid Sql fragment. /// </returns> public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters) { //criteriaQuery.AddUsedTypedValues(GetTypedValues(criteria, criteriaQuery)); ISpatialDialect spatialDialect = (ISpatialDialect)criteriaQuery.Factory.Dialect; string[] columns1 = GetColumnNames(criteria, criteriaQuery, this.propertyName); SqlStringBuilder builder = new SqlStringBuilder(10 * columns1.Length); for (int i = 0; i < columns1.Length; i++) { if (i > 0) { builder.Add(" AND "); } if (this.anotherGeometry is IGeometry) { Parameter[] parameters = criteriaQuery.NewQueryParameter(this.GetTypedValues(criteria, criteriaQuery)[0]).ToArray(); builder.Add(spatialDialect.GetSpatialRelationString(columns1[i], this.relation, parameters.Single(), true)); } else { string[] columns2 = GetColumnNames(criteria, criteriaQuery, (string)this.anotherGeometry); builder.Add(spatialDialect.GetSpatialRelationString(columns1[i], this.relation, columns2[i], true)); } } return(builder.ToSqlString()); }
/// <summary> /// Render the SQL Fragment. /// </summary> /// <param name="criteria"></param> /// <param name="position"></param> /// <param name="criteriaQuery"></param> /// <param name="enabledFilters"></param> /// <returns></returns> public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters) { ISpatialDialect spatialDialect = (ISpatialDialect)criteriaQuery.Factory.Dialect; string column1 = criteriaQuery.GetColumn(criteria, this.propertyName); string column2 = criteriaQuery.GetColumn(criteria, this.anotherPropertyName); SqlString sqlString = spatialDialect.GetSpatialRelationString(column1, this.relation, column2, false); return(new SqlStringBuilder() .Add(sqlString) .Add(" as y") .Add(position.ToString()) .Add("_") .ToSqlString()); }
public SqlString GetSpatialRelationString(object geometry, SpatialRelation relation, object anotherGeometry, bool criterion) { return(worker.GetSpatialRelationString(geometry, relation, anotherGeometry, criterion)); }