如果属性parentcustomerid不为NULL,则MS CRM 2013属性parentcustomeridtype不能为NULL

时间:2014-12-09 07:56:45

标签: web-services crm dynamics-crm-2013

亲爱的智能开发人员,

当我想通过网络服务在Microsoft Dynamics CRM 2013中创建属于某个组织的联系人时遇到问题

client = new OrganizationServiceClient("CustomBinding_IOrganizationService"); 
var newContactProperties = new Dictionary<string, object> { 
                { "lastname", "TestContact"}, 
                { "firstname", "A"},
                { "fullname", "A TestContact"}

        };

/* organizationType is a CRM.CRMWebServices.OptionSetValue
 * with ExtensionData null, PropertyChanged null and a valid Value
 *
 * orgReference is a CRM.CRMWebServices.EntityReference
 * with a valid Id
 */

newContactProperties.Add("parentcustomeridtype", organizationType);
newContactProperties.Add("parentcustomerid", orgReference);

var entity = new Entity();
entity.LogicalName = "contact";
entity.Attributes = new AttributeCollection();
entity.Attributes.AddRange(newContactProperties);

client.Create(entity);

这给了我错误&#39; 如果属性parentcustomerid不为NULL,则parentcustomeridtype不能为NULL &#39;

我很困惑为什么会发生这种情况以及如何解决这个问题。如果可以,请帮助我。

谢谢你, AllWorkNoPlay

2 个答案:

答案 0 :(得分:2)

您不需要设置&#34; parentcustomeridtype&#34;属性分开。它是一个系统字段,将由平台设置,并且由于遗留原因而存在于parentcustomerid中,当它是早期版本的Dynamics CRM中的客户类型时。 您只需在查找字段中指定EntityReference newContactProperties.Add("parentcustomerid", new EntityReference("account", new Guid("{accountid guid}")));
此外,还不清楚你在&#34; orgReference&#34;中使用了什么类型。领域。对于联系人,有效的实体类型应为&#34; account&#34;或者&#34;联系&#34;。

答案 1 :(得分:0)

感谢您的回答,我无法以这种方式使用网络服务。

我尝试使用Early Bound访问成功:

  1. 使用https://xrmearlyboundgenerator.codeplex.com/
  2. 生成代理对象
  3. 将一行[assembly:Microsoft.Xrm.Sdk.Client.ProxyTypesAssemblyAttribute()]添加到assemblyInfo以使Intellisense可用(即使是自定义字段)
  4. 现在我设法创建一个联系人并将其分配给一个组织(如下所示):

        var contact = new Contact()
                       {
                           FirstName = "Bob",
                           LastName = "Dobalina",
                           Address1_Line1 = "123 Strasse",
                           Address1_City = "Berlin",
                           Address1_PostalCode = "32254",
                           Telephone1 = "425-555-5678",
                           EMailAddress1 = "bob.dobalina@germany.de"
                       };
    
        var account = new Account()
        {
            Name = "Siemens Germany",
        };
    
    
        context.AddObject(contact);
        context.AddObject(account);
    
        context.AddLink(account, "contact_customer_accounts", contact);
    
        context.SaveChanges();
    }