0

目前,我正在使用以下代码在 CRM 中执行“更新插入”

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

我是否正确地假设这种类型的更新将清除我的业务实体中的所有现有信息?如果是这样,我怎样才能让实体从存储库中更新?我需要fetch,retrieve或类似的东西吗?

谢谢。

4

1 回答 1

2

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

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

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

于 2010-12-09T17:59:43.087 回答