linq to sql LoadWith возвращены ограничивающие поля - PullRequest
5 голосов
/ 19 января 2009

Есть ли способ использовать LoadWith, но указать возвращаемые поля?

Например, если у меня есть две таблицы 1) Продукты 2) Категории

и сделайте что-то вроде

DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Products>(d => d.Categories);
db.LoadOptions = dlo;

MyDataContext db = new MyDataContext();
var result = from d in db.Products
             select d;

когда я проверяю запрос в профилировщике, я вижу, что ВСЕ строки из таблицы категорий возвращаются. Все, что мне действительно нужно, это поле «Имя».

Я знаю, что могу переписать запрос с помощью объединений, но мне нужно вернуть набор результатов как тип данных "Product", поэтому я использую LoadWith.

Ответы [ 2 ]

1 голос
/ 19 января 2009

Нет, это невозможно с LoadWith.

Вы можете попытаться использовать вложенный запрос в проекции, хотя это будет медленно: 1 запрос на одного родителя (таким образом, 1 запрос для связанной категории на загруженный продукт).

0 голосов
/ 22 января 2010

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

select new {Order = order, ProductName = order.Product.Name,
             CustomerName = order.Customer.Name,
             OrderType = order.OrderType.Name } // etc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...