在sql中,我可以这样写
UPDATE TestObjects SET Num = Num + 1 WHERE Id = 1;
此语句使用依赖于自身的值更新列。这个例子可以很容易地扩展到依赖于另一列。我不需要知道 Num
,我只要求它自己递增,而不管它的值是多少。
如果我在ef core做的话
var testObject = _context.TestObjects.Single(x => x.Id == 1);
testObject.Num++;
_context.TestObjects.Update(testObject);
_context.SaveChanges();
我得先找回那张唱片。我需要知道 Num
在我增加它之前。在检索实体和保存实体之间,如果有其他线程已经增加了列,则保存此实体将导致错误的值。我知道我可以使用隔离级别为repeatableread或更高的事务在检索时锁定记录。这是唯一的办法吗?
对于这类问题,业界的最佳做法是什么?
暂无答案!
目前还没有任何答案,快来回答吧!