问题描述
|
我正在使用Entity Framework 4.1。
哪种流利的api方法对应于数据注释API中的[Timestamp]属性,以检查并发性?
解决方法
如果您有这样的课程:
public class MyEntity
{
...
public byte[] Timestamp { get; set; }
}
您将像这样使用流畅的映射:
modelBuilder.Entity<MyEntity>()
.Property(e => e.Timestamp)
.IsConcurrencyToken()
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
要么:
modelBuilder.Entity<MyEntity>()
.Property(e => e.Timestamp)
.IsRowVersion();
, 您可以按照Ladislav Mrnka所述使用代码,但是
之间的区别很小:
modelBuilder.Entity<MyEntity>()
.Property(e => e.Timestamp)
.IsConcurrencyToken()
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
和
modelBuilder.Entity<MyEntity>()
.Property(e => e.Timestamp)
.IsRowVersion();
第二个等效于[Timestamp]
属性,但是当我们将'Timestamp'更改为流利的API代码的第一个版本时,首先生成以下迁移:
public override void Up()
{
AlterColumn(\"dbo.MyEntity\",\"Timestamp\",c => c.Binary());
}
public override void Down()
{
AlterColumn(\"dbo.MyEntity\",c => c.Binary(nullable: false,fixedLength: true,timestamp: true,storeType: \"rowversion\"));
}