SqlBulkCopy DataTable со столбцом пространственных данных WellKnownText

Я пытаюсь выполнить массовое копирование DataTable , в котором есть следующие столбцы:

  • «ID» - System.Int32
  • » Geom »- System.String

В базу данных SQL со следующими столбцами:

  • « Id »- int
  • « Shape »- geometry

Кто-нибудь может посоветовать лучший способ сделать это?

Некоторый тестовый код, если он помогает ...

DataTable dataTable = new DataTable();
dataTable.Columns.Add("ID", typeof(Int32));
dataTable.Columns.Add("Geom", typeof(String));

dataTable.Rows.Add(1, "POINT('20,20')");
dataTable.Rows.Add(1, "POINT('40,25')");
dataTable.Rows.Add(1, "POINT('60,30')");

SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connection);
sqlBulkCopy.DestinationTableName = "MySpatialDataTable";
sqlBulkCopy.WriteToServer(dataTable);

В моем исходном сообщении не удалось объяснить, что выполнение вышеуказанного приводит к возникновению следующего исключения.

InvalidOperationException: данное значение типа String из источника данных не может быть преобразован в тип udt указанного целевого столбца.

Я предполагаю, что SqlBulkCopy не знает о типе столбца geometry и, следовательно, не знает » Я не знаю, как преобразовать в него строку . Может ли кто-нибудь подтвердить это?

8
задан Solomon Rutzky 8 September 2016 в 14:35
поделиться