EF 4.1,代码优先:商店生成的模式';计算';对于不属于';时间戳';或者';rowv

本文关键字:计算 模式 rowv 或者 时间戳 不属于 代码 EF | 更新日期: 2023-09-27 18:14:24

每个人。

我正在尝试在我的实体中添加乐观并发。实体类中定义了一个属性:

public byte[] ObjectVersion
{
    // ...
}

以下是此属性的配置:

Property(obj => obj.ObjectVersion)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed)
    .HasColumnName("ObjectVersion")
    .IsConcurrencyToken();

在运行时引发异常:"存储生成的模式'Computed'不支持非'timestamp'或'rowversion'类型的属性"。匹配的数据库列具有"rowversion"类型。

好的,让我们更改配置代码:

    Property(obj => obj.ObjectVersion)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed)
    .HasColumnName("ObjectVersion")
    .HasColumnType("rowversion")
    .IsConcurrencyToken();

但仍然抛出了异常。我做错了什么?

EF 4.1,代码优先:商店生成的模式';计算';对于不属于';时间戳';或者';rowv

文档显示了配置并发令牌的两种方法:

modelBuilder.Entity<OfficeAssignment>()
    .Property(t => t.Timestamp)
    .IsConcurrencyToken();

modelBuilder.Entity<OfficeAssignment>()
    .Property(t => t.Timestamp)
    .IsRowVersion();