0

エンティティ レコードを取得する次のコードがあります。

private void FetchEvent(string EventId, IOrganizationService crmService)
    {
        // Create the ColumnSet to be retrieved.
        ColumnSet columnSet = new ColumnSet();
        // Set the properties of the ColumnSet.
        columnSet.AddColumn("campaignid");
        columnSet.AddColumn("name");
        columnSet.AddColumn("description");
        columnSet.AddColumn("renre_giftid");
        columnSet.AddColumn("ownerid");  

        // Create the FilterExpression.
        FilterExpression filterExpression = new FilterExpression();

        // Create the ConditionExpression.
        ConditionExpression conditionExpression = new ConditionExpression();

        // Set the condition for the retrieval based on customer id field.
        conditionExpression.AttributeName = "campaignid";
        conditionExpression.Operator = ConditionOperator.Equal;
        conditionExpression.Values.Add(new string[]{EventId});

        filterExpression.FilterOperator = LogicalOperator.And;
        // Set the properties of the filter.
        filterExpression.Conditions.Add(conditionExpression);

        // Create the QueryExpression object.
        QueryExpression queryExpression = new QueryExpression();

        // Set the properties of the QueryExpression object.
        queryExpression.EntityName = "campaign";//EntityName.campaign.ToString();
        queryExpression.ColumnSet = columnSet;
        queryExpression.Criteria = filterExpression;

        RetrieveMultipleRequest InvitationResponseRequest = new RetrieveMultipleRequest();
        InvitationResponseRequest.Query = queryExpression;
        //InvitationResponseRequest.ReturnDynamicEntities = true;

        eventEntity = (Entity)((RetrieveMultipleResponse)crmService.Execute(InvitationResponseRequest)).EntityCollection.Entities[0];
    }

デバッグすると、この関数の最後の行に到達した後、eventEntity = (Entity)((RetrieveMultipleResponse)crmService.Execute(InvitationResponseRequest)).EntityCollection.Entities[0];次の例外が発生します。

属性 'campaign.campaignid' の条件: タイプ 'System.Guid' の引数が予期されていましたが、'System.String[]' を受け取りました。

提案してください。

4

1 に答える 1

2

EntityId の値として文字列配列を渡しています。

これを変える:

conditionExpression.Values.Add(new string[]{EventId});

これに:

conditionExpression.Values.Add(new Guid(EventId));

一貫性を保つために、入力パラメーターの型を Guid に変更し、EventId 引数の Pascal Cases を camel に修正することも検討してください。

于 2012-11-20T08:17:01.390 に答える