2015-02-06 47 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查询通过加载它们在一个循环中,即在可能的情况,最好使用单一查询来获取相关的记录,以避免多个数据库命中。

相关问题