Linq Query with Include не отображается как верный результат в EF 4.0 - PullRequest
2 голосов
/ 01 сентября 2011

Я использую Entity Framework 4.0 и столкнулся с проблемой следующего запроса:

IQueryable<user> users = 
    from u in Entities.users.
        Include("orders_assigned").Include("orders_assigned.order_line_items")
    from o in u.orders_assigned
    where 
        o.status.Equals((int)OrderStatus.ReadyForInvestigation) &&
        o.assigned_to_user_id != 0
    from oli in o.order_line_items
    where 
        oli.line_item_type.Equals("service") ||
        oli.line_item_type.Equals("package_service")
    select u;

Я пытаюсь вернуть список пользователей, содержащий подсписок их заказов,содержащий подсписок позиций строки заказа (что-то вроде user-> orders-> order_line_items), как показано в приведенных выше включениях - однако всякий раз, когда я вызываю ToTraceString, этот запрос показывает только возвращение списка пользователей.

Я использовал Include раньше без проблем, не уверен, что я делаю не так в этот раз.

1 Ответ

1 голос
/ 02 сентября 2011

Попробуйте:

IQueryable<user> users = ((ObjectQuery<user>)
    from u in Entities.users
    from o in u.orders_assigned
    where 
        o.status.Equals((int)OrderStatus.ReadyForInvestigation) &&
        o.assigned_to_user_id != 0
    from oli in o.order_line_items
    where 
        oli.line_item_type.Equals("service") ||
        oli.line_item_type.Equals("package_service")
    select u).Include("orders_assigned").Include("orders_assigned.order_line_items");

Объяснение здесь.

...