Plugins 使用DynamicsCRM中的插件获取EntityReference的GUID

Plugins 使用DynamicsCRM中的插件获取EntityReference的GUID,plugins,entity,dynamics-crm,entityreference,Plugins,Entity,Dynamics Crm,Entityreference,这个问题与我现在为Dynamics CRM 2011创建的插件有关 我有一个实体,它有5个属性。其中1个属性是另一个实体的查找 我试图用我的插件做的是检索查找实体的Guid。很简单,对吧 但是不,这给我带来了麻烦,我已经尝试了几十种使用EntityReference来获取guid的方法,但都做不到。我尝试过创建一个前映像,但也失败了 下面是一段代码 Entity entity = (Entity)context.InputParameters["Target"]; if (entity.

这个问题与我现在为Dynamics CRM 2011创建的插件有关

我有一个实体,它有5个属性。其中1个属性是另一个实体的查找

我试图用我的插件做的是检索查找实体的Guid。很简单,对吧

但是不,这给我带来了麻烦,我已经尝试了几十种使用EntityReference来获取guid的方法,但都做不到。我尝试过创建一个前映像,但也失败了

下面是一段代码

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

   if (entity.LogicalName == "new_producttaxrate")
  {
   if (entity.Attributes.Contains("new_product"))
     {

     EntityReference ownerLookup = (EntityReference)entity.Attributes["new_product"];
      productName = ownerLookup.Name;
      Guid  productId = ownerLookup.Id;

    }
  }
我也想到了这个

     if (entity.Attributes.Contains("new_producttaxrateid"))
              {
                  Guid myGuid = (Guid)entity.Attributes["new_producttaxrateid"];
                  EntityReference ownerLookup = new EntityReference("new_product", myGuid);
                   pid = ownerLookup.Id;
               }
我一直在犯这个错误

    Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Condition for attribute 'new_producttaxrate.new_product': expected argument(s) of type 'System.Guid' but received 'System.DBNull'.Detail: 
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
  <ErrorCode>-2147220989</ErrorCode>
  <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
    <KeyValuePairOfstringanyType>
      <d2p1:key>CallStack</d2p1:key>
      <d2p1:value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">   at Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)
   at Microsoft.Crm.Extensibility.Pipeline.Execute(PipelineExecutionContext context)
   at Microsoft.Crm.Extensibility.MessageProcessor.Execute(PipelineExecutionContext context)
   at Microsoft.Crm.Extensibility.InternalMessageDispatcher.Execute(PipelineExecutionContext context)
   at Microsoft.Crm.Extensibility.ExternalMessageDispatcher.ExecuteInternal(IInProcessOrganizationServiceFactory serviceFactory, IPlatformMessageDispatcherFactory dispatcherFactory, String messageName, String requestName, Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, ParameterCollection fields, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId, Guid transactionContextId, Int32 invocationSource, Nullable`1 requestId, Version endpointVersion)
   at Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.ExecuteRequest(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType)
   at Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.Execute(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType)</d2p1:value>
    </KeyValuePairOfstringanyType>
  </ErrorDetails>
  <Message>Condition for attribute 'new_producttaxrate.new_product': expected argument(s) of type 'System.Guid' but received 'System.DBNull'.</Message>
  <Timestamp>2011-03-17T13:21:04.6999035Z</Timestamp>
  <InnerFault i:nil="true" />
  <TraceText>

[VATPlugin2: VATPlugin2.TaxRateValidation]
[4b0b7f5c-9950-e011-849d-000c292be099: VATPlugin2.TaxRateValidation: Create of new_producttaxrate]


</TraceText>
</OrganizationServiceFault>
未处理的异常:System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault,Microsoft.Xrm.Sdk,Version=5.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35]:属性“new_producttaxrate.new_product”的条件:预期参数类型为“System.Guid”,但收到的参数为“System.DBNull”。详细信息:
-2147220989
呼叫栈
位于Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext)
位于Microsoft.Crm.Extensibility.Pipeline.Execute(PipelineExecutionContext)
位于Microsoft.Crm.Extensibility.MessageProcessor.Execute(PipelineExecutionContext)
位于Microsoft.Crm.Extensibility.InternalMessageDispatcher.Execute(PipelineExecutionContext)
位于Microsoft.Crm.Extensibility.ExternalMessageDispatcher.ExecuteInternal(IInProcessorOrganizationServiceFactory serviceFactory,IPlatformMessageDispatcherFactory dispatcherFactory dispatcherFactory,String messageName,String requestName,Int32 primaryObjectTypeCode,Int32 secondaryObjectTypeCode,ParameterCollection字段,CorrelationToken CorrelationToken,CallerRigintoken OrigingToken,UserAuth UserAuth,Guid callerId,Guid TransactiononContextId,Int32调用源,可为空的`1请求ID,版本endpointVersion)
位于Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.ExecuteRequest(OrganizationRequest请求,CorrelationToken CorrelationToken,CallerOrigingToken CallerOrigingToken,WebServiceType服务类型)
在Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.Execute(OrganizationRequest请求,CorrelationToken CorrelationToken,CallerOrigingToken CallerOrigingToken,WebServiceType服务类型)
属性“new\u producttaxrate.new\u product”的条件:应为“System.Guid”类型的参数,但收到的却是“System.DBNull”。
2011-03-17T13:21:04.6999035Z
[VATPlugin2:VATPlugin2.税率验证]
[4b0b7f5c-9950-e011-849d-000c292be099:VATPlugin2.TaxRate验证:创建新产品TaxRate]

想出了这个think im closerif(entity.Attributes.Contains(“new_producttaxrateid”){Guid myGuid=(Guid)entity.Attributes[“new_producttaxrateid”];EntityReference ownerLookup=new EntityReference(“new_product”,myGuid);//EntityReference ownerLookup=(EntityReference)entity.Attributes[“new_producttaxrateid”];pid=ownerLookup.Id;}
     if (entity.Attributes.Contains("new_product"))
                   {

                       productGUID = ((EntityReference)entity["new_product"]).Id;
                       Entity member = service.Retrieve("product", ((EntityReference)entity["new_product"]).Id, new ColumnSet(true));
                       if (member.Attributes.Contains("name"))
                       {
                           productName = member.Attributes["name"].ToString();
                       }
                   }