我正在尝试使用动态实体创建新联系人。我在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'
我确定它是一个小的类型转换错误,但我无法弄清楚错误的位置。而且,即使它是一个类型转换错误,为什么它适用于互联网上提供的所有样本,而不适用于我。我尝试运行代码示例,但我遇到相同的转换错误。如果您需要更多信息,请告知我们,我们将不胜感激。
答案 0 :(得分:3)
以下是微软的一篇文章,试图讨论这个主题:
这不是您遇到的错误,但两个程序集的工作方式和设计目的之间的设计差异更大。
如果您想继续使用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;
答案 1 :(得分:1)
感谢SaaS Developer,该代码现在运行良好。另一种方法是直接将StringProperty添加到实体属性集合中。
contactEntity.Properties.Add(sp_SSNNo);
再次感谢您的回复:)
答案 2 :(得分:0)
我认为问题在于您正在引用Microsoft.Crm.Sdk程序集中的动态实体类。 SDK中的示例使用对CRM Web服务的引用。这可能会让人感到困惑,因为两个程序集都包含许多相同的类型,但它们是不同的。