2009-12-07 49 views
1

我正在嘗試爲MS動態CRM 4.0做一個簡單的插件,在訂單的更新中發送SOAP消息中的銷售訂單的數據。 奇怪的是,我每隔一次嘗試保存/(執行插件)時都會收到此錯誤。 所以,當我更新salesorder的(任何字段),然後保存我的錯誤:給定的密鑰不在字典中

The given key was not present in the dictionary. 

當我保存之後再馬上(甚至沒有在兩者之間保存任何更改),它正確和執行給我所有我想要的數據。它實際上每次都是同樣的事情:第一次保存:錯誤,第二次保存:正確執行。

任何想法這可能是什麼?

這是我的代碼的第一部分;它實際上得到了salesorder在這種情況下,數據集:

public class CompleteOrderPlugin : IPlugin 


    {  


     public void Execute(IPluginExecutionContext context) 
     { 




       DynamicEntity entity = null; 
       if (context.InputParameters.Properties.Contains(ParameterName.Target) && 
         context.InputParameters.Properties[ParameterName.Target] is DynamicEntity) 
       { 

        entity = (DynamicEntity)context.InputParameters[ParameterName.Target]; 
        if (entity.Name != EntityName.salesorder.ToString()) { return; } 

       } 
       else 
       { 

        return; 
       } 

剩下的就是我用值從屬性,以填補我自己的變量。

+0

我會使用Fiddler並比較兩個請求 - 確保它們確實是完全相同的請求。 我相信錯誤是典型的訪問不存在的動態實體的屬性。但是,銷售訂單可能會產生一些額外的行爲,我不能評論(不知道它是你的插件還是CRM的內部結構)。如果提琴手跟蹤沒有幫助,我會附加調試器,並通過插件。 – 2009-12-07 14:44:41

+1

另外,隨時發佈一些你的插件代碼。 – 2009-12-07 22:41:22

+0

感謝您的幫助! – AaronTjong 2009-12-07 23:52:26

回答

1

我解決了這個問題,首先在插件regsitration工具中創建銷售訂單的Post Image,然後使用Post Image中的值而不是直接從銷售訂單處理的值。我這樣做是因爲在更新時,你只能得到實際改變的值。

相關問題