2010-12-06 41 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沒有或尚未設置其他方式)的屬性不會在更新感動。