public async Task UpdateListConcurrencyCheckNotModifiedAsync() { using (var db = GetSqlDatabase()) { var p = new PersonConcurrencyCheck { GuidId = Guid.NewGuid(), FirstName = "Alice", LastName = "Jones", StringId = "aj" }; var q = new PersonConcurrencyCheck { GuidId = Guid.NewGuid(), FirstName = "Raj", LastName = "Padilla", StringId = "rp" }; var r = new PersonConcurrencyCheck { GuidId = Guid.NewGuid(), FirstName = "Lidia", LastName = "Bain", StringId = "lb" }; var lst = new[] { p, q, r }; Assert.True(await db.InsertListAsync(lst)); p.FirstName = "Emily"; q.FirstName = "Jim"; r.FirstName = "Laura"; Assert.True(await db.UpdateListAsync(lst)); var gp = await db.GetAsync <PersonConcurrencyCheck>(p.GuidId); Assert.Equal("Emily", gp.FirstName); Assert.Equal(p.LastName, gp.LastName); } }
public async Task UpdateConcurrencyCheckModifiedAsync() { using (var db = GetSqlDatabase()) { var p = new PersonConcurrencyCheck { GuidId = Guid.NewGuid(), FirstName = "Alice", LastName = "Jones", StringId = "abc" }; Assert.True(await db.InsertAsync(p)); // Modify one of the concurrency-check columns to simulate it changing out from underneath us. await db.ExecuteAsync("update Person set StringId = 'xyz' where GuidId = @GuidId", p); p.FirstName = "Greg"; p.LastName = "Smith"; await Assert.ThrowsAnyAsync <OptimisticConcurrencyException>(() => db.UpdateAsync(p)); var gp = await db.GetAsync <PersonConcurrencyCheck>(p.GuidId); Assert.Equal("Alice", gp.FirstName); Assert.Equal("Jones", gp.LastName); } }
public async Task UpdateListConcurrencyCheckModifiedAsync() { using (var db = GetSqlDatabase()) { var p = new PersonConcurrencyCheck { GuidId = Guid.NewGuid(), FirstName = "Alice", LastName = "Jones", StringId = "aj" }; var q = new PersonConcurrencyCheck { GuidId = Guid.NewGuid(), FirstName = "Raj", LastName = "Padilla", StringId = "rp" }; var r = new PersonConcurrencyCheck { GuidId = Guid.NewGuid(), FirstName = "Lidia", LastName = "Bain", StringId = "lb" }; var lst = new[] { p, q, r }; Assert.True(await db.InsertListAsync(lst)); p.FirstName = "Emily"; q.FirstName = "Jim"; r.FirstName = "Laura"; // Simulate the data changing out from underneath us by modifying the second item. q.StringId += "X"; await Assert.ThrowsAnyAsync <OptimisticConcurrencyException>(() => db.UpdateListAsync(lst)); var gp = await db.GetAsync <PersonConcurrencyCheck>(p.GuidId); var gq = await db.GetAsync <PersonConcurrencyCheck>(q.GuidId); var gr = await db.GetAsync <PersonConcurrencyCheck>(r.GuidId); // None of the items should have changed. Assert.NotEqual(p.FirstName, gp.FirstName); Assert.NotEqual(q.FirstName, gq.FirstName); Assert.NotEqual(r.FirstName, gr.FirstName); } }
public async Task UpdateConcurrencyCheckNotModifiedAsync() { using (var db = GetSqlDatabase()) { var p = new PersonConcurrencyCheck { GuidId = Guid.NewGuid(), FirstName = "Alice", LastName = "Jones", StringId = "abc" }; Assert.True(await db.InsertAsync(p)); Assert.Equal("abc", p.StringId); Assert.Null(p.UpdatedOn); p.FirstName = "Greg"; p.LastName = "Smith"; Assert.True(await db.UpdateAsync(p), "Concurrent fields unchanged"); var gp = await db.GetAsync <PersonConcurrencyCheck>(p.GuidId); Assert.Equal(p.FirstName, gp.FirstName); Assert.Equal(p.LastName, gp.LastName); Assert.Equal(p.StringId, gp.StringId); Assert.Equal(p.UpdatedOn, gp.UpdatedOn); } }