实体框架 - SaveChanges:如果其他更改失败则保存一些更改

问题描述 投票:0回答:1

我有以下代码,它添加

EntityX
列表,然后调用
SaveChanges

对于

EntityX
中的某些项目,可能存在主键冲突,因此失败。

我仍然希望实体框架继续保存列表中的其余项目,即使其中一些项目失败了。

await dbContext.EntityX.AddRangeAsync(data);
await dbContext.SaveChangesAsync();
c# .net entity-framework
1个回答
0
投票

无需一一保存实体,假设你的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。

© www.soinside.com 2019 - 2024. All rights reserved.