entityframework单个表中的继承类不能使用时间戳?

时间:2013-02-27 11:16:16

标签: entity-framework timestamp

我想在Inherited类中创建一个TimeStamp字段,如下所示:

[Table("TABLE_A")]
public class A
{
  public int ID {get;set;}

  public string Name {get;set;}
}

[Table("TABLE_B")]
public class B : A
{
  public string Address {get;set;}

  [TimeStamp]
  public byte[] RowVersion {get;set;}
}

但失败了,我该怎么办?

1 个答案:

答案 0 :(得分:3)

你会看到错误

  

类型“B”定义了不允许的新并发要求   基本EntitySet类型的子类型。

这意味着错误说明了什么。实体框架不支持派生类型中的并发检查。如果您要添加简单并发检查而不是时间戳,您将看到相同的错误:

[Table("TABLE_B")]
public class B : A
{
    [ConcurrencyCheck]
    public string Address { get; set; }
}

如果要将并发检查移动到基类,那么它将起作用,但仅适用于基类型。如果您需要检查是否对派生类型执行,我认为您应该使用存储过程来更新实体。