我有三類:關係映射表與附加屬性?
public partial class Student : Contact
{
//Inherited from Contact:
//public int ContactId { get; set; }
//public string FirstName { get; set; }
//public string LastName { get; set; }
public virtual StudentExam StudentExam { get; set; }
}
public partial class Exam
{
public int ExamId { get; set; }
public string Title { get; set; }
public DateTime Date { get; set; }
public virtual StudentExam StudentExam { get; set; }
}
public partial class StudentExam
{
public byte Score { get; set; }
public int ContactId { get; set; }
public int ExamId { get; set; }
public virtual Student Student { get; set; }
public virtual Exam Exam { get; set; }
}
當試圖初始化的DbContext,它拋出一個ModelValidationException
:模型生成過程中檢測到 一個或多個驗證錯誤: \ tSystem.Data.Entity.Edm.EdmEntityType ::EntityType'StudentExam'沒有定義鍵。定義此EntityType的關鍵字。 \ tSystem.Data.Entity.Edm.EdmEntitySet:EntityType:EntitySet'StudentExams'基於沒有定義鍵的'StudentExam'類型。
我試圖改變StudentExam
類的屬性爲以下內容:
[Key, ForeignKey("Student"), Column(Order = 0)]
public int ContactId { get; set; }
[Key, ForeignKey("Exam"), Column(Order = 1)]
public int ExamId { get; set; }
現在我得到這個異常:
\ tSystem.Data.Entity.Edm.EdmAssociationEnd:多重無效在關係「StudentExam_Student」中的角色'StudentExam_Student_Source'中。因爲「依賴角色」屬性不是關鍵屬性,所以「依賴角色」的多重性的上界必須爲「*」。 \ tSystem.Data.Entity.Edm.EdmAssociationEnd::多重性在'StudentExam_Exam'關係中的角色'StudentExam_Exam_Source'中無效。因爲「依賴角色」屬性不是關鍵屬性,所以「依賴角色」的多重性的上界必須爲「*」。
有沒有辦法用數據註解來實現這一點(我不喜歡用流利的API時,我可以使用數據的註釋;流暢的API導致亂碼
我保持我的POCO清潔,我稍後向它添加元數據。添加元數據的收益也是獨立的驗證(流利性也可以實現這一點)。無論如何,通過凌亂的代碼,我的意思是說,所有流利的代碼進入一個「OnModelCreated」方法,而不是每個單獨的實體(通過實施這種方法或其他)。我正在處理生成的實體,所以它們無論如何都不是真正的開放式POCO(它使用構造函數來初始化nav.properties,因此ctor不能寫入部分類中).Sin是我添加了一個「OnCreated」部分方法並在生成實體中調用。 – Shimmy