使用FluentNHibernate,我得到这个工作: (一些值是故意不命名到约定,以避免歧义。)
public partial class PetStore //: IPetStore
{
public PetStore()
{ /*Constructor*/ }
public virtual Guid? PetStoreUUID { get; set; }
public virtual byte[] TheVersionProperty { get; set; }
public virtual string PetStoreName { get; set; }
public virtual DateTime CreateDate { get; set; }
}
public class PetStoreMap : ClassMap<PetStore>
{
public PetStoreMap()
{
Id(x => x.PetStoreUUID).GeneratedBy.GuidComb();
OptimisticLock.Version();
Version(x => x.TheVersionProperty)
.Column("MyVersionColumn")
.Not.Nullable()
.CustomSqlType("timestamp")
.Generated.Always();
Map(x => x.PetStoreName);
Map(x => x.CreateDate);
}
}
我的测试工作,而我没有得到可怕的 “”无法更新时间戳列“” 异常。
我的DDL显示为:
CREATE TABLE [dbo].[PetStore](
[PetStoreUUID] [uniqueidentifier] NOT NULL,
[MyVersionColumn] [timestamp] NOT NULL,
[PetStoreName] [nvarchar](255) NULL,
[CreateDate] [datetime] NULL)
以上是肯定的一个很好的解决方法。但是我想我实际上找到了一个不需要部署后修订脚本的工作解决方案(帖子见下文)。但是我的帖子是在你的解决方案帖子之后创建的。 – granadaCoder 2011-10-05 19:28:08