0

クラスをシリアル化するために、crm2011 のカスタム取得エンティティ応答クラスを作成しました。エンティティ レスポンス クラスは、 OrganizationRequestクラスから派生します。以下に示すとおりです。

public partial class RetrieveEntityRequest : OrganizationRequest
{

    public RetrieveEntityRequest()
    {

    }
    private System.Guid metadataIdField;
    public System.Guid MetadataId
    {
        get
        {
            return this.metadataIdField;
        }
        set
        {
            this.metadataIdField = value;
        }
    }

    public EntityFilters EntityFilters { get; set; }
    public string LogicalName { get; set; }
    public bool RetrieveAsIfPublished { get; set; }
}

今、私は以下に示すコードを実行すると

using (OrganizationServiceProxy serviceProxy = new OrganizationServiceProxy(OrganizationUri, HomeRealmUri, Credentials, null))
{
    try
    {
        serviceProxy.EnableProxyTypes();
        request = new CrmUtilities.RetrieveEntityRequest();
        request.LogicalName=entityName;
        request.EntityFilters = EntityFilters.Entity;
        request.RequestName = requestName;

        //Execute Request
        retrieveEntityResponse =   (CrmUtilities.RetrieveEntityResponse)serviceProxy.Execute(request);
    }

    catch (System.Web.Services.Protocols.SoapException ex)
    {
        throw ex;
    }

    catch (Exception ex)
    {
        throw ex;
    }
}

必須フィールドであるMetadataIdが欠落していると表示されます。スローされる例外はOrganizationServiceFault がキャッチされました //必須フィールド 'MetadataId' が欠落しています。 この場合、このカスタム オブジェクトの metadataId を作成するにはどうすればよいですか?

4

2 に答える 2

1

については、MSDN のドキュメントを参照してくださいOrganizationRequest。プロパティの 1 つは ですParameters。これは、リクエストが機能するために必要なすべてのデータのコレクションです。

ゲッターとセッターは、そのコレクションから値を設定 (または取得) する必要があります。プライベート フィールドを作成して、それが機能することを期待することはできません。;)

記録のために - CRM SDK で利用可能な他のすべてのリクエスト クラスは同じパターンに従います - それらは派生元でOrganizationRequestあり、追加のプロパティは必要なParameters.

于 2013-07-31T10:08:49.523 に答える
0

私はcrm2011を知らないので、あなたが得た例外に基づいて推測しています。ただし、例外は、フィールドが欠落していることです。あなたが持っているのはプロパティです。違いは些細に思えるかもしれませんが、リフレクションを使用する場合には大きな違いがあります。

あなたがする必要があるかもしれないことは次のとおりです:

public Guid MetadataId;

そしてあなたの財産を取り除きます。

于 2013-07-31T10:10:21.927 に答える