2009-08-17 27 views
2

我遇到了一個奇怪的場景,我正在尋找方法來弄清楚什麼是錯誤的。我有一段代碼將一行插入表中 - 這是我在其他幾十個應用程序中完成的一件事 - 但最終的結果是數據庫一端沒有任何事情發生,並且沒有產生錯誤。我如何知道發生了什麼問題?InsertOnSubmit無法觸發SubmitChanges上的數據庫插入

這裏是我的代碼:的SubmitChanges被稱爲

Partial Class MyDatabaseDataContext 

    Public Sub CreateEnrollee(subId, depId) 

     dim newEnrollee = New enrolee With {.subId = subId, .depId = depId} 

     Me.enrollees.InsertOnSubmit(newEnrollee) 
     Me.SubmitChanges() 

     dim test = NewEnrollee.id '<-- auto-incrementing key' 

    End Sub 

End Class 

後,不創建新行,「測試」是零。沒有錯誤產生。我不知道爲什麼它不試圖插入該行。有關如何調試的任何想法?

+0

存儲subId和depId的字段...那些允許空值的字段?如果不是,是否有任何值爲0? – mattruma 2009-08-17 17:45:01

+0

他們不允許使用空值,但我已經確認所輸入的值是好的。 – gfrizzle 2009-08-17 17:47:55

+0

您是否運行過SQL Profiler以確保應用程序實際上與SQL數據庫進行通信?如果是這樣,從Profiler發送到服務器的SQL是什麼? – StevenMcD 2009-08-17 18:22:23

回答

1

發現它!我做了一些其他的問題,調試的一部分,包括添加一些記錄到一些擴展方法:

Partial Private Sub InsertEnrollee(instance As Enrollee) 
End Sub 

我想:「InsertEnrollee」存在這樣加入者插入後,我可以執行的操作,所以我加了日誌代碼這就是當麻煩開始的時候。現在我猜這是你如何覆蓋Enrollee插件,如果你願意,你自己來做。由於我基本上重寫了日誌代碼,這就是爲什麼沒有發生(從數據庫的角度來看)。

+0

我剛剛遇到了這個確切的問題,並且對於我的生活無法解決什麼是停止插入! 事實證明,即使您的部分方法存根中沒有實現,也會發生此行爲。 – Dan 2010-10-06 10:07:54

1

您可以啓用日誌記錄:

Me.Log = Console.Out; 

您可以檢查ChangeSet爲對象。

+0

我做了,但沒有顯示任何語句,就像數據上下文確定插入不是必需或可能的或某事。 (日誌記錄在我的代碼的早些時候顯示了一條SELECT語句,所以我知道它的工作原理。) – gfrizzle 2009-08-17 18:26:38