2009-10-06 78 views
0

在我的情況下,我有Navision參與,但也許這與每個COM互操作場景有關,我不知道。如何使事務流從Navision到註冊爲COM interop的C#組件?

反正情況: - 我爲COM Interop 註冊一個簡單的C#組件 - 我把它從Navision公司,剛插入新記錄(誰知道Navision的,一個「OnInsert」觸發前內側,從而在交易中)

我期待有一個環境事務,但System.Transactions.Transaction.Current爲空。

我錯過了什麼嗎? 我應該採用哪些特殊技術使事務流入我的互操作組件?

回答

0

您是否試圖在NAV中開始一個事務,然後使用您的COM對象訪問該事務?

聽起來像System.Transactions.Transaction.Current值爲null,因爲您尚未初始化COM對象中的事務 - 您能發佈它的代碼示例嗎?

雖然從您的帖子中聽起來像是您期待Transaction.Current值引用您在NAV中啓動的交易,但我不認爲這將會發生,甚至是可能的!

你的COM對象試圖處理什麼?也許我們可以採取不同的方法?

+0

好,這不是我,開始交易。但我確實知道Navision OnInsert觸發器在事務上下文中運行。 我在Navision插件中運行的組件的實現是我的:它是爲COM-Interop中的工作而構建的.Net組件,因此可用於Navision環境,即COM。 現在,從我所瞭解的COM,MS DTC和.Net事務中,我認爲事務可以從Navision流向我的.Net組件:但這不會發生。 – MatteoSp 2010-03-05 13:11:25

+0

我不認爲交易可以從NAV流向您的組件...我認爲它直接從NAV到SQL,但我可能是錯的。 你的組件試圖做什麼?與嘗試劫持交易相比,可能會有更好的解決方案。 – 2010-03-07 14:16:14