1

我从 crm.dynamics.com/XRMServices/2011/Discovery.svc?wsdl 和 crm.dynamics.com/XRMServices/2011/Organization.svc?wsdl 模式生成了所有必需的 java 类。

我在 CRM 中使用 LiveId 进行了身份验证。

现在我需要在产品目录中创建产品。这是代码:

Entity newEntryInfo = new Entity();

AttributeCollection collection = new AttributeCollection();
addAttribute(collection, "name", "Tama Starclassic Performer");
addAttribute(collection, "productnumber", "1");

addAttribute(collection, "price", createMoney("100.0"));
addAttribute(collection, "isstockitem", Boolean.TRUE);
addAttribute(collection, "statuscode", 1);

newEntryInfo.setAttributes(collection);
newEntryInfo.setLogicalName("product");

Guid productGuid = serviceStub.create(newEntryInfo);

private void addAttribute(AttributeCollection collection, String key, Object value) {
    KeyValuePairOfstringanyType values = new KeyValuePairOfstringanyType();
    values.setKey(key);
    values.setValue(value);

    collection.addKeyValuePairOfstringanyType(values);
}

执行显示错误“缺少单元计划 ID。”

看起来我需要为新产品提供“单位组”和“默认单位”。

问题:如何设置这些值?我应该使用相关实体(如何创建它)或属性(如何创建它)

4

1 回答 1

0

由于它是对表单的查找,因此您应该能够使用EntityReference.

使用您的方法:

addAttribute(collection, "fieldName", new EntityReference("entityName", new Guid("id"))

在哪里:

  • fieldName是您要填充的字段的架构名称
  • entityName是您要填充字段的实体的架构名称
  • idGuid与 相同类型的记录的entityName

把它放到一个上下文中(我碰巧知道我脑海中的模式名称)。

//Create a new contact first
Entity contact = new Entity("contact");
contact["lastname"] = "Wood";

Guid contactId = service.Create(contact);

//Create an incident/case which links to that new contact
Entity incident = new Entity("incident");
incident["customerid"] = new EntityReference("contact", contactId)
service.Create(incident)

作为一个方面,您使用如此冗长的代码风格是否有特殊原因?实体类有一个链接到底层属性字典的索引。它更直截了当。

如果您正在寻找更多示例,请查看:在代码中使用后期绑定实体类

于 2013-06-13T21:12:42.303 回答