Как я могу получить все объекты, связанные через промежуточную таблицу с помощью ServiceStack.OrmLite? - PullRequest
0 голосов
/ 09 июня 2018

Я новичок, который только начал использовать ServiceStack.OrmLite.У меня вопрос.Как я могу получить все объекты, связанные через промежуточную таблицу?

подробнее, как указано ниже:

Public class book
{
    Public int id { get; set; }
    Public string name { get; set; }
    [Reference]
    Public List<bookusers> bookusers { get; set; }
}

Public class bookusers
{
    Public int id { get; set; }
    Public int bookid { get; set; }
    Public int userid { get; set; }
    [Reference]
    Public book book { get; set; }
    [Reference]
    Public user userObject { get; set; }
}

Public class user
{
    Public int id { get; set; }
    Public int age { get; set; }
    [Reference]
    Public List<bookusers> userbooks { get; set; }
}

var model = db.LoadSingleById<book>(id);
db.LoadReferences(model);
// model.bookusers[0].userObject is null

1 Ответ

0 голосов
/ 11 июня 2018

Вы не можете напрямую получить ссылки второго уровня, как указано в документации .

Загружает только связанные данные 1 глубокий уровень ссылки

Быстрым и грязным рабочим методом может быть следующий

var model = db.LoadSingleById<book>(id);
if (model.bookusers != null && model.bookusers.Any())
{
    foreach (var bookUser in model.bookusers)
    {
        db.LoadReferences(bookUser);
    }
}

Тогда вам нужно заполнить свойство userObject.

...