6

I am trying to use the ROWVERSION (or TIMESTAMP) datatype on a SQL Server table for optimistic concurrency control.

My table is setup using FluentMigrator and I do not know how to get the datatype I need. According to Microsoft's article on ROWVERSION, a nonnullable ROWVERSION column is semantically equivalent to a binary(8) column; the nullable ROWVERSION datatype is equivalent to a varbinary(8).

Here is an example and as close as I can get...

public override void Up()
    {
        Create.Table("Test")
            .WithColumn("Id").AsInt32().Identity().PrimaryKey()
            .WithColumn("Description").AsAnsiString(255)
            .WithColumn("RowVersion").AsBinary(8).NotNullable(); 
    }

.WithColumn("RowVersion").AsBinary(8).NotNullable(); is the line I can't figure out... There is no .AsRowversion or .AsTimestamp option.

Thanks in advance!

BueKoW
  • 926
  • 5
  • 18
  • 33
  • 1
    I don't know FluentMigrator, sorry. But FluentNHibernate has a method Version(x => x.VersionProperty) in ClassMap, that enables NHibernate optimistic locking (the property can be any of any integer type or DateTime). Is there nothing similar in FluentMigrator? – rumpelstiefel May 30 '12 at 20:21

1 Answers1

14

Wow! How something can be so simple that I look right over the obvious...

.WithColumn("Version").AsCustom("rowversion").NotNullable();
BueKoW
  • 926
  • 5
  • 18
  • 33