1
使用每種類型的表繼承模型和實體框架代碼首先,我試圖加載一個派生類的列表。請注意,我無法更改模型。實體框架急切加載每種類型的表繼承派生類
我有以下的模型(過於簡化)
public class Training
{
public string Name { get; set; }
public IList<Person> Persons { get; set; }
}
public abstract class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
[Table("Students")]
public class Student : Person
{
public string StudentNumber { get; set; }
public IList<Training> Trainings { get; set; }
}
[Table("Instructors")]
public class Instructor : Person
{
public DateTime StartingDate { get; set; }
public IList<Training> Trainings { get; set; }
}
我想的名字,並渴望負荷查詢培訓所有的人,包括派生類(學生和教師)。早在2011年4月,Tom Dykstra seemed to claim it wasn't possible。
當導航屬性位於TPH繼承結構的派生類上時,實體框架的當前版本不支持一對一或一對一關係的急切加載。
這個改變了嗎?我正在使用EF5。
我想,派生類的導航屬性是什麼意思是IList培訓(我忘了在我的問題中最初添加)是在講師和學生類,而不是Person類。人與教師/學生之間的關係不是一對一或一對一的關係!? –
至於包含,我假設你絕對不得不爲包含學生和講師類的數據以急切的負載出於某種原因。有用。謝謝! –
@ Nick-ACNB:是的,它是數據庫架構級別上的一對一或一對一的關係。但它不是EF與參考導航屬性的明確關係(它在TPT映射中以某種方式「隱藏」)。我認爲提到的限制只意味着這種明確的關係。 – Slauma