我想使用数值更新实体实例中的字段。我见过的所有示例(例如this one)都基于检索实例,更改实例然后存储在数据库中的范例。这似乎效率低下,而且代码看起来很讨厌而且不必要很长。
是否有更短的方式来更新实体?
我有以下数据:
所以,我试着这样开始。
DynamicEntity entity = new DynamicEntity("new_holder");
TargetUpdateDynamic update = new TargetUpdateDynamic();
update.Entity=entity;
问题在于我不确定如何处理要存储的数据。
我应该添加()作为属性吗?或者只是写进包里?
entity.Properties.Add(...);
entity["field name"] = ...;
我如何对待身份?我真的需要使用那么长的语法吗?
Guid guid = ...;
Lookup lookup = new Lookup("new_holder", guid);
LookupProperty lookupProperty = new LookupProperty("id", lookup);
entity.Properties.Add(lookupProperty);
我在声明查询时是否采用了正确的类型?
Lookup lookup1 = new Lookup("lead", guid1);
Lookup lookup2 = new Lookup("new_holder", guid2);
在声明lookup属性时,我是否假设了正确的字段名称?或者我应该使用 new_holderid , holder_guid 或除 id 以外的任何其他内容?
LookupProperty lookupProperty = new LookupProperty("id", lookup);
答案 0 :(得分:2)
如果您已拥有记录的Guid,则无需先检索实体。
我没有要测试的CRM 4.0环境,但是:
1)如果要为属性赋值,则不必先检查(并添加)属性,只需写:
entity["field name"] = ...;
但我不确定这是否也适用于主要ID字段
2)标识不是Lookup
类型,而是Key
类型,因此如果您的实体是new_holder
,则id字段为new_holderid
:
entity["new_holderid"] = new Key(guid);
因为我无法检查这种语法是否有效,所以你总是可以写:
entity.Properties.Add(new KeyProperty("new_holderid", new Key(guid)));
3)如果您要分配int
,则需要使用CrmNumber
:
entity["fieldname"] = new CrmNumber(5);
完整示例:
DynamicEntity entity = new DynamicEntity("new_holder");
entity.Properties.Add(new KeyProperty("new_holderid", new Key(guid)));
entity["field name"] = new CrmNumber(5);
TargetUpdateDynamic update = new TargetUpdateDynamic();
update.Entity = entity;
UpdateRequest request = new UpdateRequest();
request.Target = update;
UpdateResponse response = (UpdateResponse)service.Execute(request);
正如我之前所写,我没有CRM 4.0实例,但您可以尝试代码并检查哪种语法有效