2009-08-17 10 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を格納するフィールドは、NULL値を許可しますか?そうでない場合は、値0? – mattruma

+0

彼らはヌルを許可しませんが、私は良い値が入っていることを確認しました。 – gfrizzle

+0

SQLプロファイラを実行して、アプリケーションが実際にSQLデータベースと通信していることを確認しましたか?もしそうなら、プロファイラからサーバに送信されるSQLは何ですか? – StevenMcD

答えて

1

見つけました!私はいくつかの他の問題のためにやったデバッグの一部は、拡張メソッドの一部にいくつかのログを追加することが含ま:

Partial Private Sub InsertEnrollee(instance As Enrollee) 
End Sub 

私は「InsertEnrolleeは」登録者が挿入された後に私はアクションを実行する可能性が存在していたと思ったので、私はコードをロギング追加しましたここでそれはトラブルが始まったときです。今私はこれを推測しています。エンローリーインサートをオーバーライドする方法です。私は本質的にロギングコードでオーバーライドしていたので、(データベースの観点から)何も起こっていなかったのです。

+0

私はこの問題を抱えていましたが、私の人生はインサートを止めていたものを解決できませんでした。 この現象は、部分的なメソッドスタブに実装がない場合でも発生します。 – Dan

1

あなたはログを有効にすることができます:

Me.Log = Console.Out; 

あなたは、あなたのオブジェクトのためのChangeSetをチェックすることができます。

+0

私はしましたが、挿入が必要でないか、または可能でないと判断されたデータコンテキストのような、いかなるステートメントも表示しません。 (ロギングでは、コードの前にSELECTステートメントが表示されているので、動作していることがわかります) – gfrizzle

関連する問題