Fastest<DataTable>使用批量更新或新增 返回

IFastest<DataTable> fastestTable = db.Fastest<DataTable>().AS(dateBaseTableName);
if (InsertTable != null && InsertTable.Rows.Count > 0)
{
fastestTable.BulkCopy(dateBaseTableName, InsertTable);
}
if (UpdateTable != null && UpdateTable.Rows.Count > 0)
fastestTable.BulkUpdate(UpdateTable, new string[] { "Id" });
第一个if执行BulkCopy后,再执行BulkUpdate报 A DataTable named '[DemandPlanLine_2022_11]' already belongs to this DataSet." ex.StackTrace: 在 System.Data.DataTableCollection.RegisterName(String name, String tbNamespace) 在 System.Data.DataTable.set_TableName(String value) 在 SqlSugar.FastestProvider`1.<_BulkUpdate>d__27.MoveNext() 在 SqlSugar.FastestProvider`1.<BulkUpdateAsync>d__24.MoveNext() 在 SqlSugar.FastestProvider`1.BulkUpdate(DataTable dataTable, String[] whereColumns) 在 Innolight.SPMS.Web.Helper.SqlBulkCopyHelper.SqlSugarBulkUpdate(DataTable InsertTable, DataTable UpdateTable, String dateBaseTableName, List`1 updateColumnName) 在 E:\Git_Project\Innolight.SPMS\Source Code\Innolight.SPMS.Web\Helper\SqlBulkCopyHelper.cs 中: 第 160 行 实际先新增一张表数据,再更新数据,操作同一张表。传入的DataTable名不同
热忱回答(6)
-
fate sta VIP0
2022/12/2if (InsertTable != null && InsertTable.Rows.Count > 0)
{
db.Fastest<DataTable>().AS(dateBaseTableName).BulkCopy(InsertTable);
}
if (UpdateTable != null && UpdateTable.Rows.Count > 0)
db.Fastest<DataTable>().AS(dateBaseTableName).BulkUpdate(UpdateTable,new string[] { "Id" });
这样看看,如果还有问题需要提供完整DEMO
0 回复 -
fate sta VIP0
2022/12/2SqlSugar升级最新
0 回复 -
兰月二九🌾 VIP0
2022/12/2@fate sta:版本为:SqlSugarCore.dll:5.1.3.35
0 回复 -
兰月二九🌾 VIP0
2022/12/2@fate sta:这样还是不行,
@fate sta:
/// <summary>
/// SqlSugar 批量更新/新增
/// </summary>
/// <param name="dataTable"></param>
/// <param name="dateBaseTableName"></param>
/// <param name="updateColumnName"></param>
public static void SqlSugarBulkUpdate(DataTable InsertTable, DataTable UpdateTable, string dateBaseTableName,List<string> updateColumnName)
{
try
{
IFastest<DataTable> fastestTable = SugarClient.Default.Context.Fastest<DataTable>().AS(dateBaseTableName);
if (InsertTable != null && InsertTable.Rows.Count > 0)
{
fastestTable.BulkCopy(dateBaseTableName, InsertTable);
}
if (UpdateTable != null && UpdateTable.Rows.Count > 0)
fastestTable.BulkUpdate(UpdateTable, new string[] { "Id" });
}
catch (Exception ex)
{
throw;
}
}
这里传入了两个DataTable,Table名不一样。SugarClient.Default.Context,是封装了一层,实际调用
0 回复 -
fate sta VIP0
2022/12/2https://www.donet5.com/Home/Doc?typeId=2366 按模提供DEMO 可以上传的 删掉BIN和OBJ
0 回复 -
兰月二九🌾 VIP0
2022/12/2@fate sta:感谢下午协助,已找到原因,InsertTable和UpdateTable 同时加入DataSet,再取出后放在BulkUpdate和BulkCopy同时使用,会出现问题:
A DataTable named
'DataTableName'
already belongs to
this
DataSet.
错误写法如下:
正确写法如下:
0 回复