有没有办法用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)来加载口袋参考。
任何自动加载所有嵌套引用的方法,还是仅限于一层?
感谢。
答案 0 :(得分:3)
OrmLite的db.Load*
API仅限于加载1级参考深度。 Db.LoadReferences(instance)
可用于进一步获取已断开连接的POCO参考。
如果单独加载引用以通过在循环中加载它们来避免 N + 1 查询,也应该注意,即如果可能,最好使用单个查询来获取相关记录避免多次db命中。