目前,当我们从我们的网站查询 CRM 时,我们的网站面临响应时间缓慢(超过 1 分钟)的问题。我们通过 Web 服务使用 CRM 2011。当我们进行调查时,我们发现时间都花在了查询 CRM 上。
我们使用 CrmSvcUtil.exe 来生成映射到 CRM 实体的代理类。然后,我们使用带有 C# 的 LINQ 创建上下文实例并查询 CRM。
当我们查询时,我们使用 LINQ to CRM 加载父对象,然后使用 LoadProperty 加载相关的子对象。
我想知道是否有人使用其他查询 CRM 的方法,以及您在实施过程中是否遇到过此类问题。
我在下面包含了一个简化的示例查询。
public void SelectEventById(Guid id)
{
var crmEventDelivery = this.ServiceContext.EventDeliverySet.FirstOrDefault(eventDelivery => eventDelivery.Id == id);
if (crmEventDelivery != null)
{
this.SelectCrmEventDeliveryWithRelationships(crmEventDelivery);
}
}
private void SelectCrmEventDeliveryWithRelationships(EventDelivery crmEventDelivery)
{
// Loading List of Venue Delivery on parent crmEventDelivery thats been passed
this.ServiceContext.LoadProperty(crmEventDelivery, Attributes.EventDelivery.eventdelivery_venuedelivery);
foreach (var venueDelivery in crmEventDelivery.eventdelivery_venuedelivery)
{
// Loading Venue on each Venue Delivery
ServiceContext.LoadProperty(venueDelivery, Attributes.VenueDelivery.venue_venuedelivery);
}
// Loading List of Session Delivery on parent crmEventDelivery thats been passed
this.ServiceContext.LoadProperty(crmEventDelivery, Attributes.EventDelivery.eventdelivery_sessiondelivery);
foreach (var sessionDelivery in crmEventDelivery.eventdelivery_sessiondelivery)
{
// Loading Presenters on each Session Delivery
ServiceContext.LoadProperty(sessionDelivery, Attributes.SessionDelivery.sessiondelivery_presenterbooking);
}
}