人大金仓使用无实体建类插入无重复数据时报错主键重复 返回
sqlsugarcore:5.1.4.152 人大金仓:V8R6
1、先用db.DbMaintenacne.GetColumnInfosByTableName("xxx"); 从 mysql 中获取表结构信息
2、在根据表结构信息使用无实体建类 _newDb.CodeFirst.InitTables(typeA) 将表创建到人大金仓数据库
3、读取mysql中的表数据
4、再根据无实体建类插入数据到人大金仓数据库
var objList = _newDb.DynamicBuilder().CreateObjectByType(typeA,dicts);
await _newDb.InsertableByObject(objList).PageSize(1000).ExecuteCommandAsync();
批量插入数组时报错主键重复,循环单条插入时不报错
热忱回答(14)
-
fate sta VIP02024/7/10
主键是什么类型, 或者提供一个可以重现的DEMO
0 回复 -
fate sta VIP02024/7/10
是不是自增等
0 回复 -
提笔画轻风 VIP02024/7/10
主键不是自增,主键就是string、varchar
0 回复 -
提笔画轻风 VIP02024/7/10
转换成DataTable使用批量插入可以成功插入数据
await _newDb.Fastest<DataTable>().AS("tableA").PageSize(1000).BulkCopyAsync(dt);
0 回复 -
fate sta VIP02024/7/10
@提笔画轻风:string是guid吗?你保证你传入的不可能重复
0 回复 -
fate sta VIP02024/7/10
这个需提供DEMO的。因为普通插入和InsertableByObject底层是一个代码。
0 回复 -
fate sta VIP02024/7/10
几乎不可能存在BUG的。除非你构造的类不对
0 回复 -
提笔画轻风 VIP02024/7/15
数据、代码都在代码里,需要重新配置下mysql、kdbndp数据库的连接词,已成功浮现
0 回复 -
fate sta VIP02024/7/15
db.CodeFirst.InitTables<Unitfasdsfa>();//建表 db.DbMaintenance.TruncateTable<Unitfasdsfa>();//清空表 List<Unitfasdsfa> list = new List<Unitfasdsfa>(); for (int i = 0; i < 20000; i++) { list.Add(new Unitfasdsfa() { pk = i + "", Name = "n" + i }); } db.InsertableByObject(list).PageSize(1000).ExecuteCommand();//插入 //实体 public class Unitfasdsfa { [SugarColumn(IsPrimaryKey = true)] public string pk { get; set; } public string Name { get; set; } }
在我这个基础上改,改个能重现的,你的DEMO数据我不清楚本身没有重复的。
0 回复 -
fate sta VIP02024/7/15
我这边测试OK
0 回复 -
fate sta VIP02024/7/15
sqlsugar也要最新的
0 回复 -
提笔画轻风 VIP02024/7/15
数据是没有重复的,因为报错的列在mysql就是主键
0 回复 -
fate sta VIP02024/7/15
@提笔画轻风:你DEMO建表都报错,按我的用例改个能重现的
0 回复 -
fate sta VIP02024/7/15
var dt=db.Utilities.DictionaryListToDataTable(dicts);
或者用我这个转datatabe
0 回复