更新实体框架核心中依赖自身(或其他列)的列的最佳实践?

57hvy0tb  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(213)

在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或更高的事务在检索时锁定记录。这是唯一的办法吗?
对于这类问题,业界的最佳做法是什么?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题