[英]Using base class for object creates problems for EF4.1 POCO
在一個新項目中,我想使用Entity Framework的“代碼優先”功能來設置數據存儲。
在我的項目中,我可能有多種類型的人員(票證持有人,旅行者,銷售代理等),但我只想對票證持有人進行驗證。 因此,我創建了一個沒有驗證屬性的“ Person”類型的基類,以及一個包含“ First Name”驗證的“ TicketHolder”類型的繼承類。
我的問題是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; }
}
嘗試使用abstract
而不是virtual
:
public abstract class Person {
public int Id { get; set; }
public abstract string Title { get; set; }
public abstract string FirstName { get; set; }
public abstract string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
}
您可能還考慮使用MetadataTypeAttribute從實體中分離元數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.