Datatable mit SqlGeometry führt dazu, dass die Ausführung gespeicherter Prozeduren fehlschlägt ... Warum?

Ich versuche, eine Reihe von @ zu rettSqlGeometry -Werte für eine SQL Server 2008-Datenbank.

rundsätzlich habe ich einen Tablettyp in einer gespeicherten SQL Server-Prozedur, der wie folgt aussieht:

CREATE TYPE [dbo].[TableType_Example] AS TABLE
(
    [SpatialID] [bigint] NOT NULL,
    [RecordID] [bigint] NOT NULL,
    [geom] [geometry] NOT NULL
)

Ich erstelle dann eine Datentabelle in C # und sende sie wie folgt:

public static bool SaveSpatialDataElements(long recordID, List<BOSpatial> featureList)
{
        //Setup features datatable
        DataTable dtFeatures = new DataTable();
        dtFeatures.Columns.Add("SpatialID", typeof(SqlInt64));
        dtFeatures.Columns.Add("RecordID", typeof(SqlInt64));
        dtFeatures.Columns.Add("geom", typeof(SqlGeometry));

        foreach(var curFeature in featureList)
        {
            object[] curRowObjects = new object[dtFeatures.Columns.Count];
            curRowObjects[0] = curFeature.SpatialID;
            curRowObjects[1] = recordID;

            using (var reader = new StringReader(curFeature.ToGML()))
            {
                using (var xmlreader = new XmlTextReader(reader))
                {
                    curRowObjects[2] = SqlGeometry.GeomFromGml(new SqlXml(xmlreader), 0);
                }
            }

            DataRow row = dtFeatures.NewRow();
            row.ItemArray = curRowObjects;
            dtFeatures.Rows.Add(row);
        }

        DbConn conn = new DbConn();
        conn.Connect();
        conn.ExecuteStoredProcedure(false, "USP_tblSpatialLocation_Update", recordID, dtFeatures);
        conn.Disconnect();

        return true;
    }

Dies funktioniert gut für alle meine anderen Datentabellen, aber diese enthält einSqlGeometry -Spalte und es fällt mit der Fehlermeldung:

Eine Ausnahme vom Typ 'System.ArgumentException' ist in System.Data.dll aufgetreten, wurde jedoch im Benutzercode nicht behandelt.

Zusätzliche Informationen: Der Spaltentyp 'geom' wird nicht unterstützt. Der Typ ist 'SqlGeometry'

Das ergibt für mich keinen Sinn, da dieser Datentyp durch das, was ich in der Dokumentation lese, unterstützt zu sein scheint.

Irgendwelche Gedanken?

Bearbeiten

Die Kommentare unten und der Artikel, den ich verlinkt habe:https: //viswaug.wordpress.com/2008/09/29/inserting-spatial-data-in-sql-server-2008 scheint darauf hinzudeuten, dass ich den Datentyp von @ ändern muSqlGeometry zuSqlDbType.Udt. Da ich leider eine Datentabelle verwende, habe ich keine Möglichkeit, @ zu definiereUdtTypeName = “GEOMETRY”;, da dies auf dem Parameter eingestellt ist.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage