我有以下代码,它添加
EntityX
列表,然后调用 SaveChanges
。
对于
EntityX
中的某些项目,可能存在主键冲突,因此失败。
我仍然希望实体框架继续保存列表中的其余项目,即使其中一些项目失败了。
await dbContext.EntityX.AddRangeAsync(data);
await dbContext.SaveChangesAsync();
无需一一保存实体,假设你的EntityX有Id主键,我会写:
List<int> allIds = dbContext.EntityX.Select(c => c.Id).ToList();
List<EntityX> data2 = data.Where(c => allIds.IndexOf(c.Id) == -1).ToList();
await dbContext.EntityX.AddRangeAsync(data2);
await dbContext.SaveChangesAsync();
我将要保存的实体放入 data2 中,但该实体没有现有的 ID。