当我插入/更新实体时,我目前正在执行以下操作:
public async Task<IdentityResult> UpdateAsync(Model model, CancellationToken ct = default)
{
var entity = await GetAsync(ct);
if (entity == null)
{
return await CreateAsync(model, ct);
}
context.Entry(entity).State = EntityState.Detached;
Update(model);
model.ConcurrencyToken = Guid.NewGuid().ToString();
await context.SaveChangesAsync();
return IdentityResult.Success;
}
更新方法如下:
protected virtual T Update(T entity)
{
var dbEntityEntry = context.Entry(entity);
if (dbEntityEntry.State == EntityState.Detached)
{
dbSet.Attach(entity);
dbEntityEntry.State = EntityState.Modified;
}
return entity;
}
这个可以工作,但是是否有更好(通用)的处理并发的方法?
[ConcurrencyCheck]
。https://learn.microsoft.com/zh-cn/ef/core/modeling/concurrency?tabs=data-annotations - Jess