Может ли ServiceStack.OrmLite «LoadSelect» не загружать IEnumerable ссылки?

1

Учитывая следующие сокращенные DTO...

public class Order
{
    public int ID { get; set; }
    [References(typeof(Customer))]
    public int? CustomerID { get; set; }
    [Reference]
    public List<OrderItem> OrderItems { get; set; }        
}

public class OrderItem
{
    public int ID { get; set; }
    [References(typeof(Order))]
    public int? OrderID { get; set; }
    public string ProductID { get; set; }

    [Reference]
    public Product Product { get; set; }
}

... со следующим сервисом...

[Route("/orders", "GET")]
public class GetOrders : IReturn<IEnumerable<Order>>
{
    public int? Page { get; set; }
    public int? Show { get; set; }
}

public class OrderService : Service
{
    public List<Order> Get(GetOrders request)
    {
        var query = Db.From<Order>()
            .OrderByDescending(q => q.ID)
            .Limit(request.Page.GetValueOrDefault(0) * request.Show.GetValueOrDefault(25), request.Show.GetValueOrDefault(25));

        return Db.LoadSelect(query);
    }
}

LoadSelect будет правильно загружать ссылку Customer, но не будет загружать ссылку OrderItems. Есть ли способ заставить это? Я пытался бросить в Join чтобы заставить его, но все, что я пытаюсь, кажется, либо бомбит из-за OrderBy и Limit, либо оно вернет весь набор данных, прежде чем ограничивать, что убивает производительность.

Я что-то упустил, или это не поддерживается?

Теги:
ormlite-servicestack
servicestack

1 ответ

1
Лучший ответ

Во-первых, я рекомендую использовать соглашение об Id имен вместо ID при использовании библиотек ServiceStack.

Это похоже на аналогичную проблему с ссылочными данными загрузки с LoadSelect в SqlServer в запросе, который был разрешен в последнем выпуске v4.0. 34+, который теперь доступен в MyGet.

  • 0
    Большое спасибо @mythz! Отличная поддержка, как всегда. Да, похоже, это может быть проблемой. Я сделаю это. И да, я использую OrmLite.SqlServer с пейджингом и orderby, так что мне кажется, что все в порядке. LoadSingleById загрузил все ссылки должным образом, так что это, казалось, влияло на LoadSelect .
  • 0
    Я нашел способ попробовать 4.0.34 от MyGet, и теперь все исправлено. Просто к вашему сведению. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню