Я в растерянности, потому что это лучший способ получить доступ к данным Dynamics CRM 2011 и с пользовательскими критериями поиска.Я портирую веб-сайт, который использует базу данных контактов и формирует безопасность.Контакты были перенесены в Dynamics CRM 2011, поэтому я использую CRM 2011 SDK и раннее связывание для подключения к CRM для получения данных.Я использовал инструмент генерации кода, CrmSvcUtil.exe.Я использую LINQ для создания запроса, который выбирает из набора контактов в классе ContactViewDefault:
IQueryable<ContactViewDefault> query = from c in orgContext.ContactSet
select new ContactViewDefault
{
Username = c.EMailAddress1 ?? "",
Title = c.Salutation ?? "",
Firstname = c.FirstName ?? "",
Lastname = c.LastName ?? "",
Organisation = "",
Position = c.JobTitle ?? "",
Phone = c.Telephone1 ?? "",
Mobile = c.MobilePhone ?? "",
};
PagedDataSource pagedData = new PagedDataSource();
pagedData.AllowCustomPaging = true;
pagedData.AllowPaging = true;
pagedData.PageSize = 10;
pagedData.CurrentPageIndex = 1;
pagedData.DataSource = query;
Если я затем привязываю данные к «Имя пользователя»
<%# DataBinder.Eval(Container.DataItem, "Username")%>
, я получаю ошибку:«ContactViewDefault» не содержит свойство с именем «Имя пользователя».Кроме того, вызов query.Count () не поддерживается.
Затем я попытался с помощью кода CopyToDataTable (см .: http://msdn.microsoft.com/en-us/library/bb669096.aspx) скопировать в таблицу данных, а затем использовать существующие ретрансляторы и пейджинг.Проблема в том, что код очень медленный.Заполнение таблицы данных может занять около 3 минут.В таблице содержится 7000 записей.
Я пробовал настраиваемую подкачку, как описано в http://www.dotnetcurry.com/ShowArticle.aspx?ID=345,
query.OrderBy(c => c.Username);
query.Take(10);
query.Skip(0);
, чтобы выбрать первые 10 записей, но все равно требуется более 20секунд, чтобы заполнить основной повторитель.Для сравнения, исходный код может выделить все данные в источнике данных с постраничной загрузкой и отобразить первую страницу менее чем за секунду.
Итак, у меня возникло несколько проблем, и я спрашиваю, правильно ли я подхожу к этому.У меня есть еще много страниц для конвертации с более сложными запросами и объединениями, поэтому я хочу начать в правильном направлении.