gpt4 book ai didi

c# - SqlDataAdapter、SqlBulkCopy 和 DataTable 与 NetTopologySuite.IO.SqlServerBytes

转载 作者:行者123 更新时间:2023-12-03 20:50:54 24 4
gpt4 key购买 nike

我正在尝试使用 SqlBulkCopy使用 .net 核心,但由于我使用几何列,因此以下代码需要 Microsoft.SqlServer.Types,这与 .net 核心不完全兼容,尤其是在 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 中收到错误。

The given value of type XYZ from the data source cannot be converted to type udt of the specified target column


我试过 SqlBytesbyte[] ,但似乎没有任何效果。
更新 1:
我使用 byte[] 手动创建了 DataTable作为该列的类型。
有办法使用 adapter.Fill(dt); 还是很好的。或类似的,这样我就不必手动列出所有列。

最佳答案

    using (SqlDataAdapter da = new SqlDataAdapter("SELECT TOP 5 * FROM " + tableName, sqlConnection)

{
using (SqlCommandBuilder builder = new SqlCommandBuilder(da))
{

DataTable dt = new DataTable();
DataSet dataSet = new DataSet();
dt = dgPurchase.DataSource as DataTable;
//here assign the data table
da.Fill(dataSet, dt);

da.UpdateCommand = builder.GetUpdateCommand(true);

//da.InsertCommand = builder.GetInsertCommand(true);
//If new row then open it
da.Update(dataSet, dt);

}
}

// Can update though parameters .Follow the link
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/updating-data-sources-with-dataadapters

//Useing inline code .Follow the link
http://csharp.net-informations.com/dataadapter/updatecommand-sqlserver.htm

关于c# - SqlDataAdapter、SqlBulkCopy 和 DataTable 与 NetTopologySuite.IO.SqlServerBytes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62879860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com