sco*_*oob 3 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>()
Run Code Online (Sandbox Code Playgroud)
当我使用 Db.LoadSelect() 加载人员时,它仅获取对 person.Pants 的引用... person.Pants.Pocket 为 null。我必须执行 Db.LoadReferences(person.Pants) 才能加载口袋引用。
有什么方法可以自动加载所有嵌套引用,或者仅限于一层?
谢谢。
OrmLite 的db.Load*API 仅限于加载 1 级深度的引用。可Db.LoadReferences(instance)用于进一步获取断开连接的 POCO 的引用。
如果单独加载引用,您还应该注意,以避免通过在循环中加载它们来避免N+1查询,即,如果可能,最好使用单个查询来获取相关记录,以避免多次数据库命中。
| 归档时间: |
|
| 查看次数: |
1811 次 |
| 最近记录: |