public override object CreateProviderValue(DbGeometryWellKnownValue wellKnownValue)
        {
            CheckParameterNotNull("wellKnownValue", wellKnownValue);

            if (wellKnownValue.WellKnownText != null)
            {
                return(InvokeStaticFunction(
                           SqlTypes.SqlGeometryType,
                           "STGeomFromText",
                           SqlTypes.SqlCharsFromString(wellKnownValue.WellKnownText),
                           wellKnownValue.CoordinateSystemId));
            }
            else if (wellKnownValue.WellKnownBinary != null)
            {
                return(InvokeStaticFunction(
                           SqlTypes.SqlGeometryType,
                           "STGeomFromWKB",
                           SqlTypes.SqlBytesFromByteArray(wellKnownValue.WellKnownBinary),
                           wellKnownValue.CoordinateSystemId));
            }
            else
            {
                throw new ArgumentException("wellKnownValue");
            }
        }
        public override DbGeometry GeometryFromBinary(byte[] wellKnownBinary, int coordinateSystemId)
        {
            CheckParameterNotNull("wellKnownBinary", wellKnownBinary);

            var providerValue = InvokeStaticFunction(
                SqlTypes.SqlGeometryType,
                "STGeomFromWKB",
                SqlTypes.SqlBytesFromByteArray(wellKnownBinary),
                coordinateSystemId);

            return(GeometryFromProviderValue(providerValue));
        }