public void UpdateWithGetPreviousWorksAsExpected() { // --- Arrange var db = new SqlDatabase(DB_CONN); db.Execute(@"create table sample(Id int not null, Name varchar(50) null, Version rowversion not null)"); var record = new SampleRecordWithVersion { Id = 1, Name = "First" }; db.Insert(record); // --- Act record.Name = "NewFirst"; var prevRecord = db.UpdateAndGetPrevious(record); // --- Assert var current = db.FirstOrDefault <SampleRecordWithVersion>("where Id = @0", record.Id); current.ShouldNotBeNull(); prevRecord.Id.ShouldEqual(record.Id); prevRecord.Name.ShouldEqual("First"); current.Name.ShouldEqual("NewFirst"); TypeConversionHelper.ByteArrayToString(prevRecord.Version) .ShouldNotEqual(TypeConversionHelper.ByteArrayToString(current.Version)); }
public async Task UpdateWithGetCurrentAsyncWorksAsExpected() { // --- Arrange var db = new SqlDatabase(DB_CONN); await db.ExecuteAsync(@"create table sample(Id int not null, Name varchar(50) null, Version rowversion not null)"); var record = new SampleRecordWithVersion { Id = 1, Name = "First" }; await db.InsertAsync(record); // --- Act record.Name = "NewFirst"; var currentRecord = await db.UpdateAndGetCurrentAsync(record); // --- Assert var back = await db.FirstOrDefaultAsync <SampleRecordWithVersion>("where Id = @0", record.Id); back.ShouldNotBeNull(); currentRecord.Id.ShouldEqual(record.Id); currentRecord.Name.ShouldEqual("NewFirst"); back.Name.ShouldEqual("NewFirst"); TypeConversionHelper.ByteArrayToString(currentRecord.Version) .ShouldEqual(TypeConversionHelper.ByteArrayToString(back.Version)); }
public async Task SimpleUpdateAsyncWorksWithModifiedVersion1() { // --- Arrange var db = new SqlDatabase(DB_CONN); await db.ExecuteAsync(@"create table sample(Id int not null, Name varchar(50) null, Version rowversion not null)"); var record = new SampleRecordWithVersion { Id = 1, Name = "First" }; await db.InsertAsync(record); // --- Act record.Name = "NewFirst"; record.Version = new byte[0]; await db.UpdateAsync(record); }
public async Task UpdateAsyncConcurrencyIsCaught() { // --- Arrange var db = new SqlDatabase(DB_CONN); await db.ExecuteAsync(@"create table sample(Id int not null, Name varchar(50) null, Version rowversion not null)"); var record1 = new SampleRecordWithVersion { Id = 1, Name = "First" }; await db.InsertAsync(record1); var record2 = await db.FirstOrDefaultAsync <SampleRecordWithVersion>("where Id = @0", 1); // --- Act record2.Name = "Through Record2"; db.Update(record2); record1.Name = "Through Record1"; await db.UpdateAsync(record1); }
public async Task SimpleUpdateAsyncWorksWithModifiedVersion3() { // --- Arrange var db = new SqlDatabase(DB_CONN, rowVersionHandling: SqlRowVersionHandling.DoNotUseVersions); await db.ExecuteAsync(@"create table sample(Id int not null, Name varchar(50) null, Version rowversion not null)"); var record = new SampleRecordWithVersion { Id = 1, Name = "First" }; await db.InsertAsync(record); // --- Act record.Name = "NewFirst"; record.Version = new byte[0]; await db.UpdateAsync(record); var backRecord = await db.FirstOrDefaultAsync <SampleRecordWithVersion>("where Id=@0", 1); // --- Assert backRecord.ShouldNotBeNull(); backRecord.Name.ShouldEqual("NewFirst"); }
public async Task SimpleUpdateAsyncWorksWithVersion() { // --- Arrange var db = new SqlDatabase(DB_CONN); await db.ExecuteAsync(@"create table sample(Id int not null, Name varchar(50) null, Version rowversion not null)"); var record = new SampleRecordWithVersion { Id = 1, Name = "First" }; await db.InsertAsync(record); // --- Act record.Name = "NewFirst"; await db.UpdateAsync(record); // --- Assert var back = await db.FirstOrDefaultAsync <SampleRecordWithVersion>("where Id = @0", record.Id); back.ShouldNotBeNull(); back.Id.ShouldEqual(record.Id); back.Name.ShouldEqual("NewFirst"); }
public void SimpleUpdateWorksWithModifiedVersion2() { // --- Arrange var db = new SqlDatabase(DB_CONN, rowVersionHandling: SqlRowVersionHandling.IgnoreConcurrencyIssues); db.Execute(@"create table sample(Id int not null, Name varchar(50) null, Version rowversion not null)"); var record = new SampleRecordWithVersion { Id = 1, Name = "First" }; db.Insert(record); // --- Act record.Name = "NewFirst"; record.Version = new byte[0]; db.Update(record); var backRecord = db.FirstOrDefault <SampleRecordWithVersion>("where Id=@0", 1); // --- Assert backRecord.ShouldNotBeNull(); backRecord.Name.ShouldEqual("First"); }