【发布时间】:2020-08-11 07:18:23
【问题描述】:
使用 EF Core 3.1.6 时出错
我也尝试过 Detach on Entity,但错误未修复 是不是不能重复使用被跟踪的key?
The instance of entity type 'Data' cannot be tracked because another instance with the key value '{Id : 1657126}' is already being tracked. When attaching e
xisting entities, ensure that only one entity instance with a given key value is attached.
Proc.cs
public async Task ProcData(IReadOnlyCollection<DataObject> datas) {
var ctx = new DbContext();
var transaction = await ctx.Database.BeginTransactionAsync();
for(var i = 0; i < datas.Count; i++) {
var data = datas.ElementAt(i);
var g_Data =
await ctx.Data.SingleOrDefaultAsync(o =>
o.Id== o.Id) ??
new Data{Id = data.Id};
ctx.AddOrUpdate(g_Data); // Error
}
await ctx.SaveChangesAsync();
await Process(ctx);
try
{
await transaction.CommitAsync();
}
catch (Exception e)
{
await transaction.RollBackAsync();
}
}
private async Task Process(DbContext ctx) {
// something
}
【问题讨论】:
标签: c# ef-core-3.1