目前,我正在使用以下代码在CRM
中执行'upsert'try
{
crm.Create(c);
}
catch (SoapException)
{
crm.Update(c);
}
我是否正确地假设此类更新会清除我的业务实体中的所有现有信息?如果是这样,我如何让实体从存储库更新?我需要fetch
,retrieve
或类似的内容吗?
感谢。
答案 0 :(得分:2)
使用流量控制的异常处理是99.99%的时间;在这种情况下,因为你永远不知道你的SoapException的实际原因是什么。
更简洁的方法是检查你的记录的ID字段是否有值;如果是,请执行更新,如果没有,请执行创建(如果您进一步使用它,可能会将结果ID添加到您的对象中)。 (我们已经看到创建记录上的ID实际上在几年前做了更新,但我们从来没有能够重现它。)
除此之外,@剔工完全正确;您的对象中为null的属性(因为它在从数据库中检索时不在ColumnSet中或未以其他方式设置)将不会在更新中触及。