需要使用EF Core在并行场景和竞速条件下更新或插入。 唯一可行的方法是使用try catch块。没有其他工作。 我知道我可以做一个SP,但是我只想要EF ...
这是工作代码,什么都没有坏,只是一团糟...
var _be = new Models.BackgroundEntry()
{
Id = id,
Datetime = Int64.Parse(first_action.Value<String>("datetime")),
Part = part,
Domain = host,
Session = Guid.Parse(req.session_id),
Action = action.ToString(),
Location = req.location
};
context.BackgroundEntry.Add(_be);
try
{
await context.SaveChangesAsync();
}
catch
{
context.BackgroundEntry.Remove(_be);
_be = await context.BackgroundEntry.FindAsync(id, sessionGuid);
if (_be.Part.Length < part.Length)
{
_be.Part = part;
context.Update(_be);
await context.SaveChangesAsync();
}
}