Example #1
0
        public static void SetVersionOf(VersionedEntity entity, int version)
        {
            PropertyInfo versionProperty = entity.GetType().GetProperty("Version",
              BindingFlags.Public | BindingFlags.Instance);

              versionProperty.SetValue(entity, BitConverter.GetBytes(version), null);
        }
Example #2
0
        public void InsertingVersionedEntities()
        {
            var insertWriter = new InsertWriter(new SqlServerDialect(), new VersionedConfig());
            var entity       = new VersionedEntity {
                Name = "The Baz Man"
            };
            var result = insertWriter.GenerateSql(entity);

            Assert.DoesNotContain(nameof(VersionedEntity.SysEndTime), result.Sql);
            Assert.DoesNotContain(nameof(VersionedEntity.SysStartTime), result.Sql);
            Assert.DoesNotContain(nameof(VersionedEntity.SessionUser), result.Sql);
            Assert.DoesNotContain(nameof(VersionedEntity.CreatedBy), result.Sql);
        }
        public void VersionedModelShouldIncrement()
        {
            var item = new VersionedEntity()
            {
                Name = "Hello World"
            };

            Assert.Null(item.RowVersion);
            _db.Add(item);
            Assert.Equal(1, _db.SaveChanges());
            Assert.Equal(1, item.RowVersion);

            // change, save, increment
            item.Name = "Goodbye";
            _db.Update(item);
            Assert.Equal(1, _db.SaveChanges());
            Assert.Equal(2, item.RowVersion);

            // fake concurrency conflict.
            item.RowVersion = 1;
            item.Name       = "Hello Again";
            _db.Update(item);
            Assert.Throws <DbUpdateConcurrencyException>(() => _db.SaveChanges());
        }