事务锁代码优化
This commit is contained in:
parent
8efb6a3707
commit
f5218fd6d7
@ -239,7 +239,7 @@ public class RefereeController : IDynamicApiController
|
|||||||
// 同一裁判的报名请求必须串行化,否则并发报名两场重叠赛事时,
|
// 同一裁判的报名请求必须串行化,否则并发报名两场重叠赛事时,
|
||||||
// 两个事务可能都在对方写入前通过撞期校验。锁顺序固定为:裁判 -> 赛事名额。
|
// 两个事务可能都在对方写入前通过撞期校验。锁顺序固定为:裁判 -> 赛事名额。
|
||||||
var referee = await _refereeRepository.AsQueryable()
|
var referee = await _refereeRepository.AsQueryable()
|
||||||
.With("UPDLOCK, HOLDLOCK")
|
.With("WITH(UPDLOCK, HOLDLOCK)")
|
||||||
.Where(x => x.AppUserId == userId && !x.DeleteMark)
|
.Where(x => x.AppUserId == userId && !x.DeleteMark)
|
||||||
.FirstAsync();
|
.FirstAsync();
|
||||||
if (referee == null) throw Oops.Bah("裁判档案不存在,请先完善裁判资料");
|
if (referee == null) throw Oops.Bah("裁判档案不存在,请先完善裁判资料");
|
||||||
@ -299,7 +299,7 @@ public class RefereeController : IDynamicApiController
|
|||||||
{
|
{
|
||||||
// Apply 由 UnitOfWork 包裹。更新锁和范围锁会把同一赛事的“统计名额并新增报名”串行化,
|
// Apply 由 UnitOfWork 包裹。更新锁和范围锁会把同一赛事的“统计名额并新增报名”串行化,
|
||||||
// 防止最后一个名额被并发请求同时占用。
|
// 防止最后一个名额被并发请求同时占用。
|
||||||
applicationsQuery = applicationsQuery.With("UPDLOCK, HOLDLOCK");
|
applicationsQuery = applicationsQuery.With("WITH(UPDLOCK, HOLDLOCK)");
|
||||||
}
|
}
|
||||||
|
|
||||||
var activeApplications = await applicationsQuery
|
var activeApplications = await applicationsQuery
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user