2012-02-06 2 views
2

У меня есть метод GetOrder (int OrderID), который запускает запрос LINQ и возвращает заказ. Существует много свойств объекта, которые могут быть предварительно загружены (то есть с Include()) в запросе, например. DeliveryMethod, Customer, CustomerBillingAddress и т. Д. Я хочу, чтобы метод позволял вызывающему пользователю указать, какие свойства предварительно загружены, с помощью аргументов метода. Излишне говорить, что я не хочу явно выписывать каждый возможный запрос LINQ в этом методе.Запрос LINQ: динамически добавлять Включено во время выполнения

Таким образом, можно запрограммировать основной запрос, а затем добавить. Включает динамически, например.

if(PreLoadCustomer) 
     query.Include("Customer") 

Примечание: Я знаю, что существует ленивая загрузка - это не сработало - связанные объекты должны быть доступны немедленно.

Благодаря

+0

Что не так с вашим примером? –

+0

@LadislavMrnka, что не так, так как результат Include не привязан к запросу, поэтому он не влияет ... –

ответ

5

Так можно закодировать основной запрос, а затем добавить .Includes динамически

На самом деле было бы больше смысла, чтобы добавить Включает в себя первый, а затем написать сам запрос:

ObjectQuery<Order> orders = db.Orders; 
if(PreLoadCustomer) 
    orders = orders.Include("Customer"); 


var query = 
    from o in orders 
    ... 
+0

Это отлично работает. Благодаря! – Laurence

Смежные вопросы