2013-03-20 2 views
0

계정 엔터티의 모든 관련 연락처에서 전화 번호를 업데이트하려고합니다. 다음은 내가 사용했던 코드, 연결된 연락처의 전화 번호가 업데이트되지 않습니다. - CRM 2011 온라인

public class Plugin:IPlugin 
{ 
    public void Execute(IServiceProvider serviceProvider) 
    { 
     IPluginExecutionContext context = (IPluginExecutionContext) 
     serviceProvider.GetService(typeof(IPluginExecutionContext)); 

     Entity entity; 


     if (context.InputParameters.Contains("Target") && 
     context.InputParameters["Target"] is Entity) 
     { 

      entity = (Entity)context.InputParameters["Target"]; 

      if (entity.LogicalName != "account") { return; } 
     } 
     else 
     { 
      return; 
     } 

     try 
     { 
      string telephoneNum = string.Empty; 
      IOrganizationServiceFactory serviceFactory =(IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); 
      IOrganizationService service =serviceFactory.CreateOrganizationService(context.UserId); 

      var id = (Guid)context.OutputParameters["id"]; 
      telephoneNum = entity.GetAttributeValue<string>("telephone1"); 
      UpdateContact(service, id,telephoneNum); 
     } 
     catch (FaultException<OrganizationServiceFault> ex) 
     { 
      throw new InvalidPluginExecutionException(
      "An error occurred in the plug-in.", ex); 
     } 
    } 

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

      var res = from c in crm.CreateQuery("contact") 
         where c["parentcustomerid"].Equals(id) 
         select c; 

      foreach (var c in res) 
      { 
       Entity e = (Entity)c; 
       e["telephone1"] = telephoneNUm; 
       crm.UpdateObject(e); 
      } 


      crm.SaveChanges(); 
     } 
    } 
} 

내가 업데이트에 대한 플러그인을 등록하고 주요 기업 "계정"입니다하지만 난 내가 참조 전화 필드에 번호 변경 후 계정 양식을 저장하려고 할 때마다 오류 팝업. 내가 놓친 게 있니? 다들 감사 해요!

+1

어떤 오류가 나타나는지 지정할 수 있습니까? 일반적인 오류 인 경우 [trace] (http://exploringxrm.wordpress.com/2012/01/12/enabling-trace-in-microsoft-dynamics-crm-2011/) 또는이 [tool] (http : //crmdiagtool2011.codeplex.com/) 전체 오류 정보를 얻으십시오. –

답변

0

그냥 hunch..but 당신이하여 점점 잘못된 way..try의 아이디를 받고 있다고 생각 : suggested..you 정확한 오류가 무엇을 볼 필요가

Guid Id = context.PrimaryEntityId 

그러나 페드로으로 또는 attach to process를 사용하여 플러그인을 디버그하려고 시도하십시오.

+0

고마워! 나는 함께 일하고있는 "CRM 인스턴스"에 문제가 있다고 생각합니다. 플러그인을 신선한 인스턴스에 추가했을 때 효과가있었습니다. 다시 한번 감사드립니다. – Jaya

관련 문제