private static async Task Exec() { Console.WriteLine("----------------------" + "------------"); var stopwatch = Stopwatch.StartNew(); using (var db = new MyContext()) { using (var transaction = db.Database.BeginTransaction(IsolationLevel.ReadCommitted)) { // db.Database.OpenConnection(); var mergeOperation = new MergeOperation <Blog>(db); mergeOperation.WithData(() => GetBlogToInsert(100500)); mergeOperation.OnConflictDoUpdate( (Blog b) => new { b.BlogId }, (target, excluded) => new Blog { Url = excluded.Url, // Url = "TEST", }); await mergeOperation.ExecuteAsync(); transaction.Commit(); } } stopwatch.Stop(); Console.WriteLine("-------------- DONE --------------"); Console.WriteLine(stopwatch.Elapsed); }
public async Task MergeOperation_Execute_WhenCalled_NothingGoesWrong() { var changesets = new List <Changeset> { new Changeset { ChangesetId = 2, Comment = "twee" }, new Changeset { ChangesetId = 5, Comment = "vijf" }, new Changeset { ChangesetId = 7, Comment = "zeven" }, new Changeset { ChangesetId = 8, Comment = "acht" } }; _configManager.Expect(x => x.GetValue <bool>(ConfigKeys.ENABLE_WARNING_WHEN_PENDING_CHANGES)) .Return(false); _configManager.Expect(x => x.GetValue <Branch>(ConfigKeys.LATEST_VERSION_FOR_BRANCH)) .Return(Branch.None); _sut.MyCurrentAction += (s, action) => { Assert.AreEqual(Resources.MergingBranches, action); }; var excludedWorkItemTypes = new List <string> { "Code Review Request" }; _configManager.Expect(x => x.GetValue <bool>(ConfigKeys.EXCLUDE_WORK_ITEMS_FOR_MERGE)).Return(false); _configManager.Expect(x => x.GetValue <bool>(ConfigKeys.SHOULD_SHOW_LATEST_VERSION_IN_COMMENT)).Return(false); _configManager.Expect(x => x.GetValue <IEnumerable <string> >(ConfigKeys.WORK_ITEM_TYPES_TO_EXCLUDE)) .Return(excludedWorkItemTypes); var workItemsToAdd = new List <int> { 5, 75, 85 }; _configManager.Expect(x => x.GetValue <CheckInComment>(ConfigKeys.CHECK_IN_COMMENT_OPTION)) .Return(CheckInComment.None); _configManager.Expect(x => x.GetValue <string>(ConfigKeys.COMMENT_FORMAT)).Return(string.Empty); _configManager.Expect(x => x.GetValue <string>(ConfigKeys.COMMENT_LINE_FORMAT)).Return(string.Empty); _mergeService.Expect(x => x.MergeBranchesAsync(_currentWorkspaceModel, _sourceBranchName, _targetbranchName, 2, 8)).Return(Task.CompletedTask); _mergeService.Expect(x => x.GetWorkItemIdsAsync(Arg <IEnumerable <int> > .Matches(y => y.All(z => changesets.Select(cs => cs.ChangesetId).Contains(z))), Arg <IEnumerable <string> > .Matches(y => y.First() == excludedWorkItemTypes.First()))) .Return(Task.FromResult <IEnumerable <int> >(workItemsToAdd)); _teamExplorerService.Expect(x => x.AddWorkItemsAndCommentThenNavigate(_currentWorkspaceModel, string.Empty, workItemsToAdd)); await _sut.ExecuteAsync(new MergeModel { OrderedChangesets = changesets, SourceBranch = _sourceBranchName, TargetBranch = _targetbranchName, WorkspaceModel = _currentWorkspaceModel }); }