我使用BulkInsertOrUpdateAsync方法来插入net-Core3.0中的20000条记录。执行此操作时没有任何错误。它将所有具有父实体和子实体的记录都插入数据库。
var bulkConfig = new BulkConfig()
{
SetOutputIdentity = true,
PreserveInsertOrder = true
};
var subEntities = new List<ItemHistory>();
await _dbContext.BulkInsertOrUpdateAsync(entities, bulkConfig);
foreach (var entity in entities)
{
foreach (var subEntity in entity.ItemHistories)
{
subEntity.ItemId = entity.ID; // setting FK to match its linked PK that was generated in DB
}
subEntities.AddRange(entity.ItemHistories);
}
await _airportDBContext.BulkInsertOrUpdateAsync(subEntities})但是当我将记录签入数据库时,许多具有子实体的记录引用了错误的'ItemId‘。即使当我再次使用现有记录执行此操作时,它也会再次将一些记录插入到子实体中。而父实体在这两种情况下都工作得很好。我的代码中有什么问题吗?或者这是这个包的一个已知问题?
我指的是这个https://github.com/borisdj/EFCore.BulkExtensions#read-example
它可能与这个问题相同:- https://www.bountysource.com/issues/76836788-bulkinsertorupdateasync-ids-not-setting-correctly
你们谁有办法克服这个问题。
发布于 2020-11-11 15:01:18
以下是这个问题的答案
var bulkConfig = new BulkConfig()
{
SetOutputIdentity = true,
PreserveInsertOrder = true
};
var subEntities = new List<ItemHistory>();
entities = entities.ForEach(i => i.ID == 0);
await _dbContext.BulkInsertOrUpdateAsync(entities, bulkConfig);
foreach (var entity in entities)
{
foreach (var subEntity in entity.ItemHistories)
{
subEntity.ItemId = entity.ID; // setting FK to match its linked PK that was generated in DB
}
subEntities.AddRange(entity.ItemHistories);
}
await _airportDBContext.BulkInsertOrUpdateAsync(subEntities});https://stackoverflow.com/questions/64041166
复制相似问题