C# 更新现有实例的字段

C# 更新现有实例的字段,c#,plugins,dynamics-crm-4,C#,Plugins,Dynamics Crm 4,我想使用数值更新实体实例中的字段。我看到的所有示例(例如)都基于检索实例、修改实例然后存储在数据库中的范例。这看起来效率很低,代码看起来很糟糕,而且不必要的长 是否有较短的方法更新实体 我有以下数据: 名称为字符串(一个是lead,另一个是*new_holder*) 将guid设置为guid 值为int 字段名为“字符串” 所以,我试着这样开始 DynamicEntity entity = new DynamicEntity("new_holder"); TargetUpdateDynami

我想使用数值更新实体实例中的字段。我看到的所有示例(例如)都基于检索实例、修改实例然后存储在数据库中的范例。这看起来效率很低,代码看起来很糟糕,而且不必要的长

是否有较短的方法更新实体

我有以下数据:

  • 名称为字符串(一个是lead,另一个是*new_holder*)
  • 将guid设置为guid
  • 值为int
  • 字段名为“字符串”
所以,我试着这样开始

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);
    
  • 在声明查找属性时,我是否假定正确的字段名?或者我应该使用新的holderid、holder\u guid或除id之外的其他任何东西


  • 如果已经具有记录的Guid,则不需要首先检索实体

    我没有要测试的CRM 4.0环境,但是:

    1) 如果要为属性指定值,无需先检查(并添加)属性,只需编写:

    entity["field name"] = ...;
    
    但我不确定这是否也适用于主id字段

    2) 标识不是
    查找
    类型,而是
    类型,因此如果您的实体是
    新持有者
    ,则id字段是
    新持有者id

    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实例,但是您可以尝试代码并检查哪些语法有效

    Awesome,G!明天上班时我会把它打一下,然后检查它是否正确。如果所有这些都能马上奏效,我想你也应该得到一些赏金。让我再打给你,我不能出于某种原因赏金给你。链接没有出现在我的屏幕上…:(@KonradViltersten别担心,重要的是你解决了:)
    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);