使用Servicestack ORMLite加载所有层次结构引用

时间:2015-02-06 20:22:45

标签: ormlite-servicestack

有没有办法用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为null。我必须做一个Db.LoadReferences(person.Pants)来加载口袋参考。

任何自动加载所有嵌套引用的方法,还是仅限于一层?

感谢。

1 个答案:

答案 0 :(得分:3)

OrmLite的db.Load* API仅限于加载1级参考深度。 Db.LoadReferences(instance)可用于进一步获取已断开连接的POCO参考。

如果单独加载引用以通过在循环中加载它们来避免 N + 1 查询,也应该注意,即如果可能,最好使用单个查询来获取相关记录避免多次db命中。