2015-02-06 4 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

API db.Load* OrmLite ограничивается загрузкой 1-уровневой глубины ссылок. Db.LoadReferences(instance) может использоваться для дальнейшего поиска ссылок, отключенных POCO.

Вы также должны помнить, если ссылки погрузочные по отдельности, чтобы избежать N + 1 запросов, загрузив их в цикле, то есть, когда это возможно, лучше использовать один запрос для извлечения связанных записей, чтобы избежать нескольких БД хитов.