public void Upsert_PageVisit_Update_On_WhenMatched_ValueSubtract(TestDbContext.DbDriver driver) { ResetDb(driver); using (var dbContext = new TestDbContext(_dataContexts[driver])) { var newVisit = new PageVisit { UserID = 1, Date = DateTime.Today, Visits = 1, FirstVisit = _now, LastVisit = _now, }; dbContext.PageVisits.Upsert(newVisit) .On(pv => new { pv.UserID, pv.Date }) .WhenMatched(pv => new PageVisit { Visits = pv.Visits - 2, LastVisit = _now, }) .Run(); Assert.Collection(dbContext.PageVisits.OrderBy(c => c.ID), visit => AssertEqual(_dbVisitOld, visit), visit => { Assert.Equal(newVisit.UserID, visit.UserID); Assert.Equal(newVisit.Date, visit.Date); Assert.NotEqual(newVisit.Visits, visit.Visits); Assert.Equal(_dbVisit.Visits - 2, visit.Visits); Assert.NotEqual(newVisit.FirstVisit, visit.FirstVisit); Assert.Equal(_dbVisit.FirstVisit, visit.FirstVisit); Assert.Equal(newVisit.LastVisit, visit.LastVisit); }); } }
public void Upsert_Country_Update_NoColumns(TestDbContext.DbDriver driver) { ResetDb(driver); using (var dbContext = new TestDbContext(_dataContexts[driver])) { var newCountry = new Country { Name = "Australia", ISO = "AU", Created = _now, Updated = _now, }; dbContext.Upsert(newCountry) .On(c => c.ISO) .Run(); var country = dbContext.Countries.Single(c => c.ISO == newCountry.ISO); Assert.NotNull(country); Assert.Equal(newCountry.Name, country.Name); Assert.Equal(newCountry.Created, country.Created); Assert.Equal(newCountry.Updated, country.Updated); } }
public void UpsertRange_PageVisit_Update_On_WhenMatched_MultipleUpdate_FromSource(TestDbContext.DbDriver driver) { ResetDb(driver); using (var dbContext = new TestDbContext(_dataContexts[driver])) { var newVisit1 = new PageVisit { UserID = _dbVisitOld.UserID, Date = _dbVisitOld.Date, Visits = 1, FirstVisit = _now, LastVisit = _now, }; var newVisit2 = new PageVisit { UserID = _dbVisit.UserID, Date = _dbVisit.Date, Visits = 1, FirstVisit = _now, LastVisit = _now, }; dbContext.PageVisits.UpsertRange(newVisit1, newVisit2) .On(pv => new { pv.UserID, pv.Date }) .WhenMatched((pv, pvi) => new PageVisit { Visits = pv.Visits + 1, LastVisit = pvi.LastVisit, }) .Run(); Assert.Collection(dbContext.PageVisits.OrderBy(c => c.ID), visit => { Assert.Equal(newVisit1.UserID, visit.UserID); Assert.Equal(newVisit1.Date, visit.Date); Assert.NotEqual(newVisit1.Visits, visit.Visits); Assert.Equal(_dbVisitOld.Visits + 1, visit.Visits); Assert.NotEqual(newVisit1.FirstVisit, visit.FirstVisit); Assert.Equal(_dbVisitOld.FirstVisit, visit.FirstVisit); Assert.Equal(newVisit1.LastVisit, visit.LastVisit); }, visit => { Assert.Equal(newVisit2.UserID, visit.UserID); Assert.Equal(newVisit2.Date, visit.Date); Assert.NotEqual(newVisit2.Visits, visit.Visits); Assert.Equal(_dbVisit.Visits + 1, visit.Visits); Assert.NotEqual(newVisit2.FirstVisit, visit.FirstVisit); Assert.Equal(_dbVisit.FirstVisit, visit.FirstVisit); Assert.Equal(newVisit2.LastVisit, visit.LastVisit); }); } }