Я пытаюсь выполнить массовое копирование DataTable
, в котором есть следующие столбцы:
System.Int32
System.String
В базу данных SQL со следующими столбцами:
int
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
и, следовательно, не знает » Я не знаю, как преобразовать в него строку
. Может ли кто-нибудь подтвердить это?