我正在尝试在.net core 中使用SqlBulkCopy
,但是由于我使用了一个几何列,所以以下代码需要 Microsoft.SqlServer.Types,它不完全兼容 .net core,特别是在 Linux 上。
using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT TOP 0 * FROM " + tableName, sqlConnection))
{
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
}
如果没有此依赖项,则 Fill()
失败,因为它找不到该类型。
通常我使用 NetTopologySuite.IO.SqlServerBytes,但在这种情况下,魔法发生在 SqlDataAdapter 的某个地方,我不知道如何覆盖它。
我试图手动创建 DataTable 列,而不使用 Fill()
,但似乎无论我指定什么类型,稍后在 SqlBulkCopy 中都会出现错误。
来自数据源的类型 XYZ 的给定值无法转换为指定目标列的 udt 类型
我尝试使用 SqlBytes
和 byte[]
,但似乎都不起作用。
更新 1:
我通过手动创建具有 byte[]
作为该列类型的 DataTable 来使其正常工作。
仍然希望有一种方法可以使用 adapter.Fill(dt);
或类似方法,以便我不必手动列出所有列。