現在、次のコードを使用して CRM で「アップサート」を実行しています。
try
{
crm.Create(c);
}
catch (SoapException)
{
crm.Update(c);
}
この種の更新により、既存の情報がすべて私のビジネス エンティティから消去されると想定するのは正しいですか? もしそうなら、エンティティをリポジトリから更新するにはどうすればよいですか? fetch
、 、またはそのようなものが必要retrieve
ですか?
ありがとう。
現在、次のコードを使用して CRM で「アップサート」を実行しています。
try
{
crm.Create(c);
}
catch (SoapException)
{
crm.Update(c);
}
この種の更新により、既存の情報がすべて私のビジネス エンティティから消去されると想定するのは正しいですか? もしそうなら、エンティティをリポジトリから更新するにはどうすればよいですか? fetch
、 、またはそのようなものが必要retrieve
ですか?
ありがとう。
フロー制御に例外処理を使用することは、99.99%の確率で悪いことです。この場合、特にSoapExceptionの実際の理由がわからないためです。
よりクリーンな方法は、レコードのIDフィールドに値があるかどうかを確認することです。その場合は更新を実行し、そうでない場合は作成を実行します(さらに使用する場合は、結果のIDをオブジェクトに追加します)。(IDを持つレコードの作成が実際に更新を行うのは数年前に見たことがありますが、それを再現することはできませんでした。)
それ以外は、@ckellerは完全に正しいです。オブジェクトでnullである属性(データベースから取得するときにColumnSetになかったか、他の方法で設定されていないため)は、更新では変更されません。