當我們從我們的網站上查詢CRM時,我們的網站目前面臨着響應時間較慢(超過1分鐘)的問題。我們通過網絡服務使用CRM 2011。當我們調查時,我們發現時間花在了查詢CRM的時候。從CRM中加載數據時的性能問題
我們使用CrmSvcUtil.exe來生成映射到CRM實體的代理類。然後我們使用LINQ和C#創建上下文實例並查詢CRM。
當我們查詢時,我們用LINQ加載我們的父對象到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);
}
}
我不知道這些特定的服務,但如果我是你可能與'foreach'語句開始。通常當查詢它們導致昂貴時。但是,我再次不知道你的服務細節。 –