2013-02-27 40 views
2

我要在繼承的類來創建一個時間戳字段是這樣的:entityframework單表中的繼承類不能使用時間戳?

[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;} 
} 

但失敗了,我該怎麼辦嗎?

回答

3

你會看到錯誤

「B」型定義不允許用於基礎EntitySet的類型 亞型新的併發需求。

這意味着什麼錯誤說。實體框架不支持派生類型中的併發檢查。你會看到同樣的錯誤,如果你會,而不是添加時間戳的簡單併發檢查:

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

如果將移動併發檢查,以基類,那麼它會工作,但僅限於基本類型。如果您需要檢查派生類型,我認爲您應該使用存儲過程來更新實體。