Ссылка на SQL:Могу ли я быстро загрузить только одно поле в объединенную таблицу?

StackOverflow https://stackoverflow.com/questions/29040

Вопрос

У меня есть одна таблица "заказы" с начальным ключом "ProductID".

Я хочу показать заказы в виде сетки с название продукта, без Ленивая загрузка для повышения производительности, но я, если использую Параметры загрузки данных он извлекает ВСЕ Поля продукта, которые соединяются подобно перебор.

Есть ли способ восстановить Только название продукта в первом запросе?Могу ли я установить какой-нибудь атрибут в DBML?

В этом таблица говорит, что "Значения внешнего ключа" "Видны" в Linq To SQL, но не знаю, что это значит.

Редактировать:Изменил название, потому что я не совсем уверен, что решения нет.
Не могу поверить, что ни у кого нет такой же проблемы, это очень распространенный сценарий.

Это было полезно?

Решение 3

Я получаю решение в этом другом вопросе Какой .net ORM может справиться с этим сценарием, это связано с лайам кленнан ответ, но более четкий (возможно, вопрос тоже был более ясным)

Другие советы

То, о чем вы просите, - это уровень оптимизации, которого не обеспечивает linq-to-sql.Я думаю, вам лучше всего создать запрос, который возвращает именно те данные, которые вы хотите, возможно, в виде анонимного типа:

from order in DB.GetTable<Orders>()
join product in DB.GetTable<Products>()
on order.ProductID = product.ID
select new { ID = order.ID, Name = order.Name, ProductName = product.Name };

Если вы выберете только нужные столбцы в запросе linq, а затем вызовете .ToList() по запросу, он будет немедленно выполнен и вернет только те столбцы, которые вас интересуют.Например, если вы сделаете это:

var q = from p in dataContext.products select p.ProductName;
var results = q.ToList();

Вы получите обратно список названий продуктов, сохраненных в результатах, и когда запрос будет выполнен на сервере, он вернет только столбец ProductName.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top