在Dynamics CRM 4中执行upsert(更新或插入)操作的干净方法

时间:2010-12-06 11:20:03

标签: c# dynamics-crm-4 upsert

目前,我正在使用以下代码在CRM

中执行'upsert'
try
{
 crm.Create(c);
} 
catch (SoapException)
{
 crm.Update(c);
}

我是否正确地假设此类更新会清除我的业务实体中的所有现有信息?如果是这样,我如何让实体从存储库更新?我需要fetchretrieve或类似的内容吗?

感谢。

1 个答案:

答案 0 :(得分:2)

使用流量控制的异常处理是99.99%的时间;在这种情况下,因为你永远不知道你的SoapException的实际原因是什么。

更简洁的方法是检查你的记录的ID字段是否有值;如果是,请执行更新,如果没有,请执行创建(如果您进一步使用它,可能会将结果ID添加到您的对象中)。 (我们已经看到创建记录上的ID实际上在几年前做了更新,但我们从来没有能够重现它。)

除此之外,@剔工完全正确;您的对象中为null的属性(因为它在从数据库中检索时不在ColumnSet中或未以其他方式设置)将不会在更新中触及。