1
在新項目上,我想使用Entity Framework的「代碼優先」功能來設置我的數據存儲。使用對象的基類爲EF4.1創建問題POCO
在我的項目中,我可能有多種類型的人(票務持有人,旅行者,銷售代理人等),但我只想驗證持票人。所以我創建了一個類型爲「Person」的基類,它沒有驗證屬性和一個類型爲「TicketHolder」的繼承類,該類包含First Name的驗證等)。
我的問題是EF時拋出了異常:模型生成過程中檢測到
一個或多個驗證錯誤: System.Data.Edm.EdmProperty:名稱:在類型每個屬性名稱必須是唯一的。屬性名稱'標題'已經定義。
看起來EF並未意識到「TicketHolder」的屬性會覆蓋「Person」的屬性。
我該如何解決這個問題?
基類:
public abstract class Person
{
public int Id { get; set; }
public virtual string Title { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
}
爲TicketHolder派生類:
public class TicketHolder : Person
{
[Required(ErrorMessage = "Title Required")]
public override string Title { get; set; }
[Required(ErrorMessage = "First Name Required")]
public override string FirstName { get; set; }
[Required(ErrorMessage = "Last Name Required")]
public override string LastName { get; set; }
}
嗨Jakub ...我用虛擬的,因爲如果我創建另一個派生類,我不會然後需要實現標題,名字和姓氏屬性。 – FloatLeft
@FloatLeft - 比你應該創建一個MetadataTypeAttribute'元數據好友類' –