【问题标题】:Creation of Dynamic Entities in MS CRM 4.0在 MS CRM 4.0 中创建动态实体
【发布时间】:2011-02-26 02:00:16
【问题描述】:

我正在尝试使用动态实体创建新联系人。我在 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 命名空间的变量)并将字符串属性添加到其中并将其传递给实体。

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”

我确定这是一个小的类型转换错误,但我无法弄清楚错误在哪里。而且,即使这是一个类型转换错误,为什么它适用于互联网上给出的所有样本而不是我。我尝试让代码示例运行,但我遇到了相同的转换错误。如果您需要这方面的更多信息,请告诉我,我们将不胜感激。

【问题讨论】:

    标签: dynamics-crm dynamics-crm-4


    【解决方案1】:

    这是微软的一篇文章,试图讨论这个话题:

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

    这不是您遇到的错误,而是两个程序集的工作方式与其设计用途之间的设计差异。

    如果您想继续使用 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;
    

    【讨论】:

      【解决方案2】:

      感谢 SaaS 开发人员,该代码现在运行良好。另一种方法是直接将 StringProperty 添加到实体属性集合中。

      contactEntity.Properties.Add(sp_SSNNo);
      

      再次感谢您的回复:)

      【讨论】:

        【解决方案3】:

        我认为问题在于您在 Microsoft.Crm.Sdk 程序集中引用了动态实体类。 SDK 中的示例使用对 CRM Web 服务的引用。这可能会让人感到困惑,因为这两个程序集包含许多相同的类型,但它们是不同的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-31
          • 1970-01-01
          • 2017-12-24
          • 1970-01-01
          相关资源
          最近更新 更多