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); }
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()); }