public Task Pending(DbContext db, SubmissionCreatedRequest args) { return(db.Set <ScoreCache>().MergeAsync( sourceTable: new[] { new { args.ContestId, args.TeamId, args.ProblemId } }, targetKey: sc => new { sc.ContestId, sc.TeamId, sc.ProblemId }, sourceKey: sc => new { sc.ContestId, sc.TeamId, sc.ProblemId }, updateExpression: (t, s) => new ScoreCache { PendingRestricted = t.PendingRestricted + 1, }, insertExpression: s => new ScoreCache { ContestId = s.ContestId, TeamId = s.TeamId, ProblemId = s.ProblemId, PendingRestricted = 1, }, delete: false)); }
public async Task Pending(DbContext db, SubmissionCreatedRequest args) { await db.Set <ScoreCache>().MergeAsync( sourceTable: new[] { new { args.ContestId, args.ProblemId, args.TeamId } }, targetKey: args => new { args.ContestId, args.ProblemId, args.TeamId }, sourceKey: args => new { args.ContestId, args.ProblemId, args.TeamId }, delete: false, updateExpression: (s, _) => new ScoreCache { PendingPublic = s.PendingPublic + 1, PendingRestricted = s.PendingRestricted + 1, }, insertExpression: r => new ScoreCache { ContestId = r.ContestId, TeamId = r.TeamId, ProblemId = r.ProblemId, PendingPublic = 1, PendingRestricted = 1, }); }