Esempio n. 1
0
        /// <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>
		/// Initializes a new instance of the <see cref="SpatialValidationFunction"/> class.
		/// </summary>
		/// <param name="spatialDialect">The spatial dialect.</param>
		/// <param name="validation">The validation.</param>
		public SpatialValidationFunction(ISpatialDialect spatialDialect, SpatialValidation validation)
			: base(validation.ToString(), NHibernateUtil.Boolean)
		{
			this.spatialDialect = spatialDialect;
			this.validation = validation;
			this.allowedArgsCount = 1;
		}
Esempio n. 3
0
        /// <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[] columnsUsingProjection = criteriaQuery.GetColumnsUsingProjection(criteria, this.propertyName);
            IType    typeUsingProjection    = criteriaQuery.GetTypeUsingProjection(criteria, this.propertyName);

            if (typeUsingProjection.ReturnedClass != typeof(IGeometry))
            {
                throw new QueryException(string.Format("Type mismatch in {0}: {1} expected type {2}, actual type {3}", GetType(), this.propertyName, typeof(IGeometry), typeUsingProjection.ReturnedClass));
            }
            if (typeUsingProjection.IsCollectionType)
            {
                throw new QueryException(string.Format("cannot use collection property ({0}.{1}) directly in a criterion, use ICriteria.CreateCriteria instead", criteriaQuery.GetEntityName(criteria), this.propertyName));
            }
            SqlStringBuilder builder = new SqlStringBuilder(2 * columnsUsingProjection.Length);

            for (int i = 0; i < columnsUsingProjection.Length; i++)
            {
                if (i > 0)
                {
                    builder.Add(" AND ");
                }
                builder.Add(spatialDialect.GetSpatialValidationString(columnsUsingProjection[i], this.validation, true));
            }
            return(builder.ToSqlString());
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="SpatialRelationFunction"/> class.
 /// </summary>
 /// <param name="spatialDialect">The spatial dialect.</param>
 /// <param name="relation">The relation.</param>
 public SpatialRelationFunction(ISpatialDialect spatialDialect, SpatialRelation relation)
     : base(relation.ToString(), NHibernateUtil.Boolean)
 {
     this.spatialDialect   = spatialDialect;
     this.relation         = relation;
     this.allowedArgsCount = 2;
 }
Esempio n. 5
0
        /// <summary>
        /// Creates SQL to create auxiliary database objects.
        /// </summary>
        /// <param name="dialect">The dialect.</param>
        /// <param name="mapping">The mapping.</param>
        /// <param name="defaultCatalog">The default catalog.</param>
        /// <param name="defaultSchema">The default schema.</param>
        /// <returns></returns>
        public override string SqlCreateString(NHibernate.Dialect.Dialect dialect, IMapping mapping, string defaultCatalog, string defaultSchema)
        {
            ISpatialDialect spatialDialect = (ISpatialDialect)dialect;
            StringBuilder   builder        = new StringBuilder();

            // Create general objects
            builder.Append(spatialDialect.GetSpatialCreateString(defaultSchema));

            // Create objects per column
            VisitGeometryColumns(delegate(Table table, Column column)
            {
                // Ugly trick: We use Comparator property to get the column instance of IGeometryUserType.
                // (Comparator is mainly used in IVersionType comparisons)
                // Maybe it will require to implement IComparer in IGeometryUserType, just to comply.
                //
                // It would be nicer if CustomType made UserType property public (today is protected).
                IGeometryUserType geometryType = (IGeometryUserType)((CustomType)column.Value.Type).Comparator;

                // The previous trick allows to get geometry type properties, such as SRID.
                int srid       = geometryType.SRID;
                string subtype = geometryType.Subtype;

                builder.Append(spatialDialect.GetSpatialCreateString(defaultSchema, table.Name, column.Name, srid, subtype));
            });

            return(builder.ToString());
        }
Esempio n. 6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SpatialValidationFunction"/> class.
 /// </summary>
 /// <param name="spatialDialect">The spatial dialect.</param>
 /// <param name="validation">The validation.</param>
 public SpatialValidationFunction(ISpatialDialect spatialDialect, SpatialValidation validation)
     : base(validation.ToString(), NHibernateUtil.Boolean)
 {
     this.spatialDialect   = spatialDialect;
     this.validation       = validation;
     this.allowedArgsCount = 1;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SpatialRelationFunction"/> class.
 /// </summary>
 /// <param name="spatialDialect">The spatial dialect.</param>
 /// <param name="relation">The relation.</param>
 public SpatialRelationFunction(ISpatialDialect spatialDialect, SpatialRelation relation)
     : base(relation.ToString(), NHibernateUtil.Boolean)
 {
     this.spatialDialect = spatialDialect;
     this.relation = relation;
     this.allowedArgsCount = 2;
 }
        /// <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;

            if (this.pattern == null)
            {
                sqlString = spatialDialect.GetSpatialRelateString(column1, column2, null, false, false);
            }
            else
            {
                string column3 = criteriaQuery.GetColumn(criteria, this.pattern);
                if (column3 == null)
                {
                    sqlString = spatialDialect.GetSpatialRelateString(column1, column2, this.pattern, true, false);
                }
                else
                {
                    sqlString = spatialDialect.GetSpatialRelateString(column1, column2, column3, false, false);
                }
            }
            return(new SqlStringBuilder()
                   .Add(sqlString)
                   .Add(" as y")
                   .Add(position.ToString())
                   .Add("_")
                   .ToSqlString());
        }
Esempio n. 9
0
 private void Cleanup()
 {
     sessions.Close();
     sessions           = null;
     spatialDialect     = null;
     connectionProvider = null;
     lastOpenedSession  = null;
     configuration      = null;
 }
Esempio n. 10
0
        /// <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          column         = criteriaQuery.GetColumn(criteria, this.propertyName);
            SqlString       sqlString      = this.ToSqlString(column, spatialDialect);

            return(new SqlStringBuilder()
                   .Add(sqlString)
                   .Add(" as y")
                   .Add(position.ToString())
                   .Add("_")
                   .ToSqlString());
        }
        /// <summary>
        /// Creates SQL to drop auxiliary database objects.
        /// </summary>
        /// <param name="dialect">The dialect.</param>
        /// <param name="defaultCatalog">The default catalog.</param>
        /// <param name="defaultSchema">The default schema.</param>
        /// <returns></returns>
        public override string SqlDropString(NHibernate.Dialect.Dialect dialect, string defaultCatalog, string defaultSchema)
        {
            ISpatialDialect spatialDialect = (ISpatialDialect)dialect;
            StringBuilder   builder        = new StringBuilder();

            // Drop objects per column
            VisitGeometryColumns((table, column) => builder.Append(spatialDialect.GetSpatialDropString(defaultSchema, table.Name, column.Name)));

            // Drop general objects
            builder.Append(spatialDialect.GetSpatialDropString(defaultSchema));

            return(builder.ToString());
        }
        /// <summary>
        /// Creates SQL to create auxiliary database objects.
        /// </summary>
        /// <param name="dialect">The dialect.</param>
        /// <param name="mapping">The mapping.</param>
        /// <param name="defaultCatalog">The default catalog.</param>
        /// <param name="defaultSchema">The default schema.</param>
        /// <returns></returns>
        public override string SqlCreateString(NHibernate.Dialect.Dialect dialect, IMapping mapping, string defaultCatalog, string defaultSchema)
        {
            ISpatialDialect spatialDialect = (ISpatialDialect)dialect;
            StringBuilder   builder        = new StringBuilder();

            // Create general objects
            builder.Append(spatialDialect.GetSpatialCreateString(defaultSchema));

            // Create objects per column
            VisitGeometryColumns((tbl, col) => ColumnVisitorSQLCreate(tbl, col, builder, defaultSchema, spatialDialect));

            return(builder.ToString());
        }
Esempio n. 13
0
        /// <summary>
        /// Render the SQL Fragment.
        /// </summary>
        /// <param name="criteria"></param>
        /// <param name="position"></param>
        /// <param name="criteriaQuery"></param>
        /// <returns></returns>
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery)
        {
            ISpatialDialect spatialDialect = (ISpatialDialect)criteriaQuery.Factory.Dialect;
            string          column1        = criteriaQuery.GetColumn(criteria, this.propertyName);
            SqlString       sqlString      = spatialDialect.GetSpatialValidationString(column1, this.validation, false);

            return(new SqlStringBuilder()
                   .Add(sqlString)
                   .Add(" as y")
                   .Add(position.ToString())
                   .Add("_")
                   .ToSqlString());
        }
Esempio n. 14
0
        /// <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)
        {
            IEnumerable <Parameter> parameters = criteriaQuery.NewQueryParameter(GetParameterTypedValue(criteria, criteriaQuery));

            Parameter p = null;

            foreach (Parameter p_ in parameters)
            {
                p = p_;
            }

            //Parameter[] p = criteriaQuery.NewQueryParameter(GetTypedValues(criteria, criteriaQuery)[0]).ToArray();
            ISpatialDialect spatialDialect = (ISpatialDialect)criteriaQuery.Factory.Dialect;

            string[] columnsUsingProjection = criteriaQuery.GetColumnsUsingProjection(criteria, this.propertyName);
            IType    typeUsingProjection    = criteriaQuery.GetTypeUsingProjection(criteria, this.propertyName);

            if (typeUsingProjection.IsCollectionType)
            {
                throw new QueryException(string.Format("cannot use collection property ({0}.{1}) directly in a criterion, use ICriteria.CreateCriteria instead", criteriaQuery.GetEntityName(criteria), this.propertyName));
            }
            string[] keyColumns = criteriaQuery.GetIdentifierColumns(criteria);


            string entityType = criteriaQuery.GetEntityName(criteria, this.propertyName);
            AbstractEntityPersister entityPersister = (AbstractEntityPersister)criteriaQuery.Factory.GetEntityPersister(entityType);

            // Only one key column is assumed
            string keyColumn   = keyColumns[0];
            string alias       = criteriaQuery.GetSQLAlias(criteria, this.propertyName);
            string tableName   = entityPersister.TableName;
            int    aliasLength = alias.Length + 1;

            SqlStringBuilder builder = new SqlStringBuilder(10 * columnsUsingProjection.Length);

            for (int i = 0; i < columnsUsingProjection.Length; i++)
            {
                if (i > 0)
                {
                    builder.Add(" AND ");
                }
                string geometryColumn = columnsUsingProjection[i].Remove(0, aliasLength);
                builder.Add(spatialDialect.GetSpatialFilterString(alias, geometryColumn, keyColumn, tableName, p));
            }
            return(builder.ToSqlString());
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="SpatialAnalysisFunction"/> class.
        /// </summary>
        /// <param name="spatialDialect">The spatial dialect.</param>
        /// <param name="analysis">The analysis.</param>
        public SpatialAnalysisFunction(ISpatialDialect spatialDialect, SpatialAnalysis analysis)
            : base(analysis.ToString(),
			  (analysis == SpatialAnalysis.Distance ?
					NHibernateUtil.Double :
					spatialDialect.GeometryType))
        {
            this.spatialDialect = spatialDialect;
            this.analysis = analysis;
            if (this.analysis == SpatialAnalysis.ConvexHull)
            {
                this.allowedArgsCount = 1;
            }
            else
            {
                this.allowedArgsCount = 2;
            }
        }
Esempio n. 16
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SpatialAnalysisFunction"/> class.
 /// </summary>
 /// <param name="spatialDialect">The spatial dialect.</param>
 /// <param name="analysis">The analysis.</param>
 public SpatialAnalysisFunction(ISpatialDialect spatialDialect, SpatialAnalysis analysis)
     : base(analysis.ToString(),
            (analysis == SpatialAnalysis.Distance ?
             NHibernateUtil.Double :
             spatialDialect.GeometryType)
            )
 {
     this.spatialDialect = spatialDialect;
     this.analysis       = analysis;
     if (this.analysis == SpatialAnalysis.ConvexHull)
     {
         this.allowedArgsCount = 1;
     }
     else
     {
         this.allowedArgsCount = 2;
     }
 }
        /// <summary>
        /// Creates SQL to create auxiliary database objects.
        /// </summary>
        /// <param name="dialect">The dialect.</param>
        /// <param name="mapping">The mapping.</param>
        /// <param name="defaultCatalog">The default catalog.</param>
        /// <param name="defaultSchema">The default schema.</param>
        /// <returns></returns>
        public override string SqlCreateString(NHibernate.Dialect.Dialect dialect, IMapping mapping, string defaultCatalog, string defaultSchema)
        {
            ISpatialDialect spatialDialect = (ISpatialDialect)dialect;
            StringBuilder   builder        = new StringBuilder();

            // Create general objects
            builder.Append(spatialDialect.GetSpatialCreateString(defaultSchema));

            // Create objects per column
            VisitGeometryColumns(delegate(Table table, Column column)
            {
                IGeometryUserType geometryType = (IGeometryUserType)((CustomType)column.Value.Type).UserType;
                int srid       = geometryType.SRID;
                string subtype = geometryType.Subtype;
                int dimension  = geometryType.Dimension;

                builder.Append(spatialDialect.GetSpatialCreateString(defaultSchema, table.Name, column.Name, srid, subtype, dimension));
            });

            return(builder.ToString());
        }
        /// <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);
            SqlString       sqlString;

            if (this.IsBinaryOperation())
            {
                string column2 = criteriaQuery.GetColumn(criteria, this.anotherPropertyName);
                sqlString = spatialDialect.GetSpatialAnalysisString(column1, this.analysis, column2);
            }
            else
            {
                sqlString = spatialDialect.GetSpatialAnalysisString(column1, this.analysis, this.arguments);
            }
            return(new SqlStringBuilder()
                   .Add(sqlString)
                   .Add(" as y")
                   .Add(position.ToString())
                   .Add("_")
                   .ToSqlString());
        }
 /// <summary>
 /// Render the SQL Fragment.
 /// </summary>
 /// <param name="column">The column.</param>
 /// <param name="spatialDialect">The spatial dialect.</param>
 /// <returns></returns>
 public override SqlString ToSqlString(string column, ISpatialDialect spatialDialect)
 {
     return spatialDialect.GetSpatialAggregateString(column, this.aggregate);
 }
 /// <summary>
 /// Render the SQL Fragment.
 /// </summary>
 /// <param name="column">The column.</param>
 /// <param name="spatialDialect">The spatial dialect.</param>
 /// <returns></returns>
 public virtual SqlString ToSqlString(string column, ISpatialDialect spatialDialect)
 {
     return null;
 }
        private void ColumnVisitorSQLCreate(Table table, Column column, StringBuilder builder, string defaultSchema, ISpatialDialect spatialDialect)
        {
            IGeometryUserType geometryType = (IGeometryUserType)((CustomType)column.Value.Type).UserType;
            int srid = geometryType.SRID;
            var key  = table.Name + "." + column.Name;

            if (SridMap.ContainsKey(key) && SridMap[key] > 0)
            {
                srid = SridMap[key];
            }
            string subtype   = geometryType.Subtype;
            int    dimension = geometryType.Dimension;

            builder.Append(spatialDialect.GetSpatialCreateString(defaultSchema, table.Name, column.Name, srid, subtype, dimension, column.IsNullable));
        }
Esempio n. 22
0
		private void Cleanup()
		{
			sessions.Close();
			sessions = null;
			spatialDialect = null;
			connectionProvider = null;
			lastOpenedSession = null;
			configuration = null;
		}
Esempio n. 23
0
		private void BuildSessionFactory()
		{
			sessions = configuration.BuildSessionFactory();
			spatialDialect = (ISpatialDialect)((ISessionFactoryImplementor)this.sessions).Dialect;
			connectionProvider = ((ISessionFactoryImplementor)this.sessions).ConnectionProvider as DebugConnectionProvider;
		}
		private void ColumnVisitorSQLCreate(Table table, Column column, StringBuilder builder, string defaultSchema, ISpatialDialect spatialDialect)
		{
			IGeometryUserType geometryType = (IGeometryUserType)((CustomType)column.Value.Type).UserType;
			int srid = geometryType.SRID;
			var key = table.Name + "." + column.Name;
			if (SridMap.ContainsKey(key) && SridMap[key] > 0)
			{
				srid = SridMap[key];
			}
			string subtype = geometryType.Subtype;
			int dimension = geometryType.Dimension;

			builder.Append(spatialDialect.GetSpatialCreateString(defaultSchema, table.Name, column.Name, srid, subtype, dimension, column.IsNullable));
		}
Esempio n. 25
0
 private void BuildSessionFactory()
 {
     sessions           = configuration.BuildSessionFactory();
     spatialDialect     = (ISpatialDialect)((ISessionFactoryImplementor)this.sessions).Dialect;
     connectionProvider = ((ISessionFactoryImplementor)this.sessions).ConnectionProvider as DebugConnectionProvider;
 }
 /// <summary>
 /// Render the SQL Fragment.
 /// </summary>
 /// <param name="column">The column.</param>
 /// <param name="spatialDialect">The spatial dialect.</param>
 /// <returns></returns>
 public override SqlString ToSqlString(string column, ISpatialDialect spatialDialect)
 {
     return(spatialDialect.GetSpatialTransformString(column, this.targetSrid));
 }
Esempio n. 27
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MsSqlLegacyDialect"/> class.
 /// </summary>
 public MsSqlLegacyDialect()
 {
     SpatialDialect.LastInstantiated = this;
     worker = new MsSqlLegacyFunctionRegistration(this);
 }
Esempio n. 28
0
 /// <summary>
 /// Render the SQL Fragment.
 /// </summary>
 /// <param name="column">The column.</param>
 /// <param name="spatialDialect">The spatial dialect.</param>
 /// <returns></returns>
 public virtual SqlString ToSqlString(string column, ISpatialDialect spatialDialect)
 {
     return(null);
 }
Esempio n. 29
0
 /// <summary>
 /// Render the SQL Fragment.
 /// </summary>
 /// <param name="column">The column.</param>
 /// <param name="spatialDialect">The spatial dialect.</param>
 /// <returns></returns>
 public override SqlString ToSqlString(string column, ISpatialDialect spatialDialect)
 {
     return(spatialDialect.GetSpatialAggregateString(column, this.aggregate));
 }
Esempio n. 30
0
        /// <summary>
        /// Gets a value indicating whether the session supports spatial metadata.
        /// </summary>
        /// <value>
        ///     <c>true</c> if it supports spatial metadata; otherwise, <c>false</c>.
        /// </value>
        /// <param name="session">The session</param>
        /// <param name="metadataClass">The metadata class</param>
        public static bool SupportsSpatialMetadata(ISession session, MetadataClass metadataClass)
        {
            ISpatialDialect spatialDialect = (ISpatialDialect)((ISessionFactoryImplementor)session.SessionFactory).Dialect;

            return(spatialDialect.SupportsSpatialMetadata(metadataClass));
        }
		/// <summary>
		/// Initializes a new instance of the <see cref="MsSql2008SpatialDialect"/> class.
		/// </summary>
		protected MsSql2008SpatialDialect(string sqlTypeName, string geometryColumnsViewName, IType geometryType)
		{
			SpatialDialect.LastInstantiated = this;
			worker = new MsSql2008FunctionRegistration(this, sqlTypeName, geometryColumnsViewName, geometryType);
		}
 /// <summary>
 /// Render the SQL Fragment.
 /// </summary>
 /// <param name="column">The column.</param>
 /// <param name="spatialDialect">The spatial dialect.</param>
 /// <returns></returns>
 public override SqlString ToSqlString(string column, ISpatialDialect spatialDialect)
 {
     return spatialDialect.GetSpatialTransformString(column, this.targetSrid);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="MsSql2008SpatialDialect"/> class.
 /// </summary>
 protected MsSql2008SpatialDialect(string sqlTypeName, string geometryColumnsViewName, IType geometryType)
 {
     SpatialDialect.LastInstantiated = this;
     worker = new MsSql2008FunctionRegistration(this, sqlTypeName, geometryColumnsViewName, geometryType);
 }
		/// <summary>
		/// Initializes a new instance of the <see cref="MsSqlLegacyDialect"/> class.
		/// </summary>
		public MsSqlLegacyDialect()
		{
			SpatialDialect.LastInstantiated = this;
			worker = new MsSqlLegacyFunctionRegistration(this);
		}