2
使用EF代碼優先和給定的包含列表中的實體,我怎樣才能急切地加載整個對象圖是該實體:急切裝載導航屬性即列表<OfSomeBaseClass>
實施例:
public class Foo
{
public int Id { get; set; }
public List<BarBase> Bars { get; set; }
}
public class BarBase
{
public int Id { get; set; }
public string Text { get; set; }
}
public class BarTypeA : BarBase
{
public List<Baz> Bazes { get; set; }
}
public class BarTypeB : BarBase
{
public List<Quux> Quuces { get; set; } { get; set; }
}
如果BarBase
不是一個基類,可以包含幾個不同亞型的情況下,我可以用
.Include("Bars").Include("Bars.Bazes")
如果我嘗試
.Include("BarBase").Include("BarBase.Bazes").Include("BarBase.Quuces")
我得到的錯誤
一個指定的包含路徑無效。 EntityType'BarBase'確實 沒有聲明名爲'Bazes'的導航屬性。
但我怎麼處理這個Bars
可以包含不同類型的具體情況,我想急切地加載所有這些事例中,包括包含在這些具體類型的List<T>
的?
這個類似的問題有一個可接受的解決方案,但我不明白解決方案。你是否同意接受的答案將解決這類問題? http://stackoverflow.com/questions/7635152/entity-framework-eager-loading-of-subclass-related-objects – 2012-05-23 20:22:51
是的,它應該工作。這是很好的解決方法,但它可能會產生複雜的SQL查詢。 – 2012-05-24 20:01:08