2015-02-06 69 views
2

有沒有什麼辦法用servicestack/ormlite預加載所有嵌套和子嵌套的引用?使用Servicestack加載所有層次引用ORMLite

public class Person 

{ 

    public int Id { get; set; } 

    [References(typeof(Pants))] 
    public int PantsId { get; set; } 

    [Reference] 
    public Pants Pants { get; set; } 

} 

public class Pants 
{ 

    public int Id { get; set; } 

    [References(typeof(Pocket))] 
    public int PocketId { get; set; } 

    [Reference] 
    public Pocket Pocket { get; set; } 

} 

public class Pocket 
{ 

    public int Id { get; set; } 

    public int Depth { get; set; } 

} 

Db.LoadSelect<Person>() 

當我加載使用Db.LoadSelect()的人只取引用最多person.Pants ... person.Pants.Pocket爲空。我將不得不做一個Db.LoadReferences(person.Pants)來加載口袋參考。

是否有自動加載所有嵌套引用的方法,還是僅限於一個圖層?

謝謝。

回答

3

OrmLite的db.Load* API僅限於加載1級參考深度。 Db.LoadReferences(instance)可用於進一步獲取斷開連接的POCO參考。

你也應該銘記,如果加載單獨的引用避免N + 1查詢通過加載它們在一個循環中,即在可能的情況,最好使用單一查詢來獲取相關的記錄,以避免多個數據庫命中。

相關問題