我有一個公司和員工類,都從Holder類繼承。 我使用EntityFramework 5的每種類型的表,在數據庫中創建它們具有實體框架的外鍵代碼優先和繼承類
我有一個CheckinTools類,它使用我的Holder類。
public class Company : Holder
{
public virtual string Email { get; set; }
public virtual string Phone { get; set; }
}
public class Employee: Holder
{
public virtual string Phone { get; set; }
public virtual string LastName { get; set; }
}
public class Holder: IntId
{
public virtual string Name { get; set; }
}
public class CheckinTool: IntId
{
public virtual Holder EmployeeCompanyHolder { get; set; }
public virtual Tool Tool { get; set; }
public virtual DateTime CheckinDateTime { get; set; }
}
public class IntId
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
}
當我測試我的MVC應用程序的一切CRUD,直到我創建了一個CheckinTool,我創建了一個CheckinTool,任何操作按ID檢索員工或公司後工作正常返回以下錯誤:「屬性'Id'是對象的關鍵信息的一部分,不能修改「
我觀察到,在我的CheckinTool表中它有一個名爲」IdHolder「的列,在Holder表中有一個Id的外鍵,而我的員工和公司表有一個外鍵到Id,也在持有人
IMO我解決了問題一個壞方法。
我剛剛將CheckInTool類中的EmployeeCompany屬性類型從Holder更改爲int 但我覺得某些東西不適合此解決方案。
任何人有任何想法如何解決它,而無需更改EmplotyeeCompany屬性?
在此先感謝
我不知道問題是什麼,因爲我從來沒有使用過註釋來定義對象和表之間的映射。請考慮使用Fluent API。 – mostruash
他沒有使用註解來映射。註釋告訴EF它是一個Key,應該是自動生成的。 – Maess
我只是使用流利的API來應用每個類型的表與實體框架,但我需要使用哪個註釋?對不起,我不理解你的評論Maess –