2013-01-07 35 views
0

使用下面的代碼進行編碼時出錯。在我想要在「var workReportItem」最後一行的workReportItem中設置客戶(賬戶)的引用之前,一切正常。該代碼是:設置參考CRM 2011插件時出錯

private static void AddWRItoServiceActivity(IOrganizationService service, Guid id) 
    { 
     using (var crm = new XrmServiceContext(service)) 
     { 

      var serviceactivity = crm.ServiceAppointmentSet.Where(c => c.Id == id).First(); 
      var serviceitem = crm.brd_serviceitemSet.Where(c => c.brd_RegardingServiceId.Id == serviceactivity.ServiceId.Id); 

      foreach (var S in serviceitem) 
      { 
       var workReportItem = new brd_workreportitem 
        { 
         brd_name = S.brd_name, 
         brd_serviceappointment_brd_workreportitem = serviceactivity, 
         brd_brd_serviceitem_brd_workreportitem_ServiceItem = S, 
         brd_brd_servicereportitem_brd_workreportitem_ServiceReportItem = S.brd_brd_servicereportitem_brd_serviceitem_ServiceReportItem, 
         brd_Customer = serviceactivity.Customers.First().ToEntityReference(), 
        }; 

       // Setting the optionset value "type" 
       OptionSetValue myOptionSet = new OptionSetValue(); 
       myOptionSet.Value = S.brd_brd_servicereportitem_brd_serviceitem_ServiceReportItem.brd_Type.Value; 
       workReportItem.Attributes["brd_type"] = myOptionSet; 

       crm.AddObject(workReportItem); 
       crm.SaveChanges(); 
      } 
     } 
    } 

的錯誤是:值不能爲空。參數名稱:來源。 這是值得讚賞的,如果任何人都可以提供幫助。

+0

我測試過的插件,而不在其上設置帳戶,效果不錯。 –

+0

「S.brd_brd_servicereportitem_brd_serviceitem_ServiceReportItem.brd_Type.Value」的值是什麼? –

+0

它是在servicereportitem實體上設置的選項的值。 –

回答

0

我用下面的代碼,以黨名單上設置的參考:

ActivityParty activityParty = new ActivityParty { PartyId = new EntityReference(MissionAccount.LogicalName, MissionAccount.Id) }; 
var customer = new List<ActivityParty>(); 
customer.Add(activityParty); 
serviceactivity.Customers = customer; 
0

看起來喜歡客戶爲null。您必須對設置的客戶執行另一個查詢,以便撤回客戶以進行服務活動。