1

動的エンティティを使用して新しい連絡先を作成しようとしています。CRM SDK で見つけたサンプルには、このコードが含まれていました。

// Set the properties of the contact using property objects.
        StringProperty firstname = new StringProperty();
        firstname.Name = "firstname";
        firstname.Value = "Jesper";
        StringProperty lastname = new StringProperty();
        lastname.Name = "lastname";
        lastname.Value = "Aaberg";

        // Create the DynamicEntity object.
        DynamicEntity contactEntity = new DynamicEntity();

        // Set the name of the entity type.
        contactEntity.Name = EntityName.contact.ToString();

        // Set the properties of the contact.
        contactEntity.Properties = new Property[] {firstname, lastname};

私のコードでは、次の実装があります。

        StringProperty sp_Field1 = new StringProperty("Field1","Value1");
        StringProperty sp_Field2 = new StringProperty("Field2","Value1");

        CrmService service = new CrmService();
        service.Credentials = System.Net.CredentialCache.DefaultCredentials;
        // Create the DynamicEntity object.
        DynamicEntity contactEntity = new DynamicEntity();
        // Set the name of the entity type.
        contactEntity.Name = EntityName.contact.ToString();
        // Set the properties of the contact.
        contactEntity.Properties = new Property[] {sp_Field1,sp_Field2};

コードに大きな違いは見られません。インターネットで見つけた例では、SDK で見つけたものと同じ実装をしています。しかし、同じものを実行すると、次のエラーが発生します

CS0029: 型 'Microsoft.Crm.Sdk.StringProperty' を 'Microsoft.Crm.Sdk.PropertyCollection' に暗黙的に変換できません

タイプPropertyCollection(mscrm名前空間に属するもの)の新しい変数を作成しようとし、それにstringpropertysを追加してエンティティに渡しました。

Microsoft.Crm.Sdk.PropertyCollection propTest = new Microsoft.Crm.Sdk.PropertyCollection();
        propTest.Add(sp_SSNNo);
        propTest.Add(sp_FirstName);
        contactEntity.Properties = new Property[] {propTest};

これにより、次のエラーが発生しました

CS0029: 型 'Microsoft.Crm.Sdk.PropertyCollection' を 'Microsoft.Crm.Sdk.Property' に暗黙的に変換できません

マイナーな型キャスト エラーであると確信していますが、エラーの場所を特定できません。さらに、型キャスト エラーであったとしても、インターネットで提供されたすべてのサンプルで機能し、私では機能しないのはなぜですか。コード サンプルを実行しようとしましたが、同じ変換エラーが発生します。これについてさらに情報が必要な場合はお知らせください。これに関する助けがあれば幸いです。

4

3 に答える 3

3

これは、このトピックについて議論しようとする Microsoft の記事です。

http://community.dynamics.com/blogs/cscrmblog/archive/2008/06/23/web-services-amp-dlls-or-what-s-up-with-all-the-duplicate-classes.aspx

これはあなたが遭遇しているバグではありませんが、2 つのアセンブリが機能する方法と、それらが行うように設計されていることの間の設計上の違いです。

Microsoft.Crm.Sdk.dll を引き続き使用する場合は、次の方法で目標を達成できるはずです...

    StringProperty sp_Field1 = new StringProperty("Field1","Value1");
    StringProperty sp_Field2 = new StringProperty("Field2","Value1");

    CrmService service = new CrmService();
    service.Credentials = System.Net.CredentialCache.DefaultCredentials;
    // Create the DynamicEntity object.
    DynamicEntity contactEntity = new DynamicEntity();
    // Set the name of the entity type.
    contactEntity.Name = EntityName.contact.ToString();

    // Set the properties of the contact.
    PropertyCollection properties = new PropertyCollection();
    properties.Add(sp_Field1);
    contactEntity.Properties = properties;
于 2008-10-15T14:42:40.510 に答える
1

SaaS 開発者に感謝します。そのコードは現在正常に動作しています。もう 1 つの方法は、StringProperty をエンティティ プロパティ コレクションに直接追加することです。

contactEntity.Properties.Add(sp_SSNNo);

返信ありがとうございます:)

于 2008-10-15T14:56:39.590 に答える
0

問題は、Microsoft.Crm.Sdk アセンブリで動的エンティティ クラスを参照していることだと思います。SDK のサンプルは、CRM Web サービスへの参照を使用しています。両方のアセンブリに同じ型が多数含まれているため、混乱する可能性がありますが、それらは異なります。

于 2008-10-15T14:09:46.160 に答える