Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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");
        }
Пример #6
0
        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");
        }
Пример #7
0
        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");
        }