示例#1
0
        public async Task RunAsync()
        {
            var firstAppContextModels = await _firstAppContext.Commons
                                        .AsNoTracking()
                                        .Where(model => model.Code == _code)
                                        .ToListAsync();

            var secondAppContextModels = await _secondAppContext.Commons
                                         .AsNoTracking()
                                         .Where(model => model.Code == _code)
                                         .ToListAsync();

            await _secondAppContext.BulkDeleteAsync(secondAppContextModels);

            var modelsToAdd = firstAppContextModels
                              .Select(firstModel => new Common
            {
                InternalNumber = firstModel.InternalNumber,
                Code           = _code,
                Name           = firstModel.Name,
                Updated        = DateTime.Now,
            })
                              .ToList();

            await _secondAppContext.BulkInsertAsync(modelsToAdd);
        }
        private async Task DeleteAsync()
        {
            var idsToDelete = _targetModels
                              .Select(model => model.InternalNumber)
                              .Except(_sourceModels
                                      .Select(model => model.InternalNumber));

            if (idsToDelete.Any())
            {
                List <Common> modelsToDelete = _targetModels
                                               .Where(model => idsToDelete.Contains(model.InternalNumber))
                                               .ToList();

                await _targetContext.BulkDeleteAsync(modelsToDelete);
            }
        }