2010-12-06 42 views
0

目前,我使用下面的代码在CRM执行“更新插入”清洁方式Dynamics CRM中做一个更新插入(更新或插入)操作4

try 
{ 
crm.Create(c); 
} 
catch (SoapException) 
{ 
crm.Update(c); 
} 

我是正确的假设,这更新类型将擦除我业务实体中的所有现有信息?如果是这样,我怎样才能从实体库更新实体?我需要fetchretrieve或类似的东西吗?

谢谢。

+1

如果“C”的信息被擦除或不取决于它是如何定义的。在更新期间,只更新非空的属性。 能否请你告诉你将如何在描述的上下文定义的“C”? – ccellar 2010-12-08 16:20:57

回答

2

使用异常处理的流程控制不好的时候99.99%;在这种情况下,因为你永远不知道你的SoapException的真正原因是什么。

更清洁的方法是检查记录的ID字段是否具有价值;如果是的话,做一个更新,如果没有的话,做一个Create(并且如果你进一步使用它,可能会将结果ID添加到你的对象中)。 (我们已经看到了在创建带有ID的记录其实做一个更新年前,但我们从来没有能够重现它。)

除此之外,@ckeller是完全正确的;这是在你的对象空(因为它从数据库中检索时,在ColumnSet没有或尚未设置其他方式)的属性不会在更新感动。