#asp.net #performance #gridview #dynamics-crm #early-binding
#asp.net #Производительность #просмотр сетки #dynamics-crm #раннее связывание
Вопрос:
Объект продукта Crm содержит 40 000 записей.
В CustomerPortal я просто выбираю все продукты и привязываю их к сетке.
Для выборки запроса и привязки кода похоже:
var DataSource = from products in xrm.ProductSet
select new DTO_RequiredProductField()
{
Id = products.Id.ToString(),
Name = products.Name.ToString(),
Price = products.Price.ToString()
};
gdvProduct.DataSource = DataSource;
gdvProduct.DataBind();
Это работает нормально, но только при первой загрузке загрузка занимает от 30 до 40 секунд (после этого та же страница загружается всего за 2 секунды).
Я не использовал сеанс / кэш и что-нибудь в этом роде.
Если я использую приведенный ниже запрос (принимая только 5 записей), то также происходит та же задержка:
var DataSource = from products in xrm.ProductSet.Take(5)
select new DTO_RequiredProductField()
{
Id = products.Id.ToString(),
Name = products.Name.ToString(),
Price = products.Price.ToString()
};
Почему задержка от 30 до 40 секунд при первой загрузке?
Ответ №1:
первый запрос в CRM часто выполняется медленнее, чем последующие.
Я предлагаю сделать WhoAmIRequest
после создания IOrganizationService
объекта, чтобы ваш запрос продукта не был выполнен как первый запрос.