Выбор столбцов в DataLoadOptions - PullRequest
2 голосов
/ 24 июня 2009

Я использую DataLoadOptions для получения Пользователя, который изменил данные Клиента,

DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Customer>(c => c.ModifiedBy);

Однако мне нужны только идентификатор пользователя и имя, а не все столбцы. Есть ли способ указать нужные столбцы в DataLoadOptions?

Таблица:

Customer (ID, FirstName, LastName, Email, ModifiedByUserID etc)
User (ID, FirstName, LastName, etc)

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

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

DataLoadOptions

options.LoadWith<OrderInfo>(OrderInfo => OrderInfo.SourceSystemOrderDetails);
options.LoadWith<OrderInfo>(OrderInfo => OrderInfo.Packages);

Запрос

var orders = context.OrderInfo.Select(x => new
                {

                    ID = x.SourceSystemOrderDetails.OrderId,
                    Name = x.SourceSystemOrderDetails.Name,
                    PackageCount = x.Packages.Count()

                }).ToArray();

Это даст вам анонимный объект. В базе данных он вернет только указанные столбцы. Вы также можете просто создать свой бизнес-объект здесь, если хотите.

1 голос
/ 24 июня 2009

Я не думаю, что есть какой-либо способ указать столбцы для загрузки с DataLoadOptions.

Существует метод DataLoadOptions.AssociateWith, который позволяет ограничить объем извлекаемых данных, но это касается записей.

Если это возможно, система должна была каким-то образом знать, что запись была загружена только с указанным количеством столбцов. Когда незагруженные столбцы будут запрошены в будущем, Linq должен будет извлечь только эти столбцы из базы данных. Я не думаю, что Линк способен на это.

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