public async Task ReplaceAllLearningDeliveriesForLearnerAsync(Guid learnerId, IEnumerable <LearningDelivery> learningDeliveries,
                                                                      CancellationToken cancellationToken)
        {
            // Done this as the OTB EF method to delete by anything other than PK would be slow.
            // If moving away from SQL Server, then should look at a more generic way of doing this
            await _dbContext.ExecuteSqlAsync("DELETE FROM LearningDelivery WHERE LearnerId = {0}", new object[] { learnerId }, cancellationToken);

            await _dbContext.LearningDeliveries.AddRangeAsync(learningDeliveries, cancellationToken);

            await _dbContext.CommitAsync(cancellationToken);
        }
コード例 #2
0
        public async Task <UpsertResult <Guid> > UpsertLearnerAsync(Learner learner, CancellationToken cancellationToken)
        {
            bool created;
            Guid key;

            var existingLearner = await _dbContext.Learners
                                  .Where(x => x.Ukprn == learner.Ukprn &&
                                         x.LearnRefNumber == learner.LearnRefNumber)
                                  .SingleOrDefaultAsync(cancellationToken);

            if (existingLearner == null)
            {
                if (learner.Id == Guid.Empty)
                {
                    learner.Id = new Guid();
                }

                _dbContext.Learners.Add(learner);

                key     = learner.Id;
                created = true;
            }
            else
            {
                existingLearner.UpdateFrom(learner);

                key     = existingLearner.Id;
                created = false;
            }

            await _dbContext.CommitAsync(cancellationToken);

            return(new UpsertResult <Guid>
            {
                Created = created,
                Key = key,
            });
        }
コード例 #3
0
        public async Task <bool> UpsertProviderAsync(FeProvider provider, CancellationToken cancellationToken)
        {
            bool created;

            var existingProvider = await _dbContext.FeProviders
                                   .Where(x => x.Ukprn == provider.Ukprn)
                                   .SingleOrDefaultAsync(cancellationToken);

            if (existingProvider == null)
            {
                _dbContext.FeProviders.Add(provider);
                created = true;
            }
            else
            {
                existingProvider.UpdateFrom(provider);
                created = false;
            }

            await _dbContext.CommitAsync(cancellationToken);

            return(created);
        }