Запрос LINQ: динамически добавлять включения во время выполнения - PullRequest
2 голосов
/ 06 февраля 2012

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

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

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

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

Спасибо

1 Ответ

5 голосов
/ 06 февраля 2012

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

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

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


var query =
    from o in orders
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...