哪种流利的api方法与数据注释API中的[Timestamp]属性相对应,以检查并发性

问题描述

| 我正在使用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\"));
    }