2013-02-12 53 views
1

我有這樣一個類:第一數據編碼的註解和繼承

public class Customer : Entity 
{ 
    [Required] 
    public string Forename { get; set; } 
    [Required] 
    public string Surname { get; set; } 

    public virtual ICollection<GazetteerLinks> GazetteerLinks { get; set; } 
    public virtual ICollection<Address> Addresses { get; set; } 
} 

,它是由1 n個子之間和繼承 - 類。有沒有一種方法可以禁用某些子類的Required註解?我不能100%確定所有來自第三方的數據集都能滿足要求,但希望在我自己創建的數據集上執行。

+0

您可以嘗試覆蓋子類中的屬性。我不確定這會刪除所需的或不。 – 2013-02-12 17:31:09

回答

2

我對此有評論和答案。

評論:Required註釋在您描述的情況下沒有業務存在。如果您向第三方授予訪問權限,但不確定他們需要這些屬性,那麼您需要將它們設爲空。對於你自己的數據集,我強烈推薦使用ViewModel對象,然後對該對象進行一些驗證,並且只有在它通過驗證之後,才能創建數據庫對象並將其保存到數據庫中。這樣你就可以得到兩全其美的好處:你不必擔心第三方不需要它,你自己的工作將需要驗證。

答案:我和最近一直在做的項目有類似的情況。我最終做的是將該類作爲抽象類,然後覆蓋子類中的值。如果您覆蓋該屬性並具有不同的註釋,則EF足夠聰明,只需查看用於製作表的覆蓋即可。

+0

欣賞真實世界的例子,我會給你建議一個嘗試。我接受你所說的使它們可以爲空的說法,但總有兩種不同的方法可以讓你滿意。 – markp3rry 2013-02-12 21:11:11