LINQ to SQL をデバッグして変更を送信するのに非常に苦労しています。
私はhttp://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspxを使用しています。これは単純なクエリのデバッグに最適です。
私は自分のアプリケーションから次のスニペットを使用して、プロジェクトの DataContext クラスで作業しています。
JobMaster newJobToCreate = new JobMaster();
newJobToCreate.JobID = 9999
newJobToCreate.ProjectID = "New Project";
this.UpdateJobMaster(newJobToCreate);
this.SubmitChanges();
this.SubmitChanges; を実行すると、非常に奇妙な例外が発生します。
Index was outside the bounds of the array.
スタック トレースは、私が踏み込めない場所に移動します。
at System.Data.Linq.IdentityManager.StandardIdentityManager.MultiKeyManager`3.TryCreateKeyFromValues(Object[] values, MultiKey`2& k)
at System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache`2.Find(Object[] keyValues)
at System.Data.Linq.IdentityManager.StandardIdentityManager.Find(MetaType type, Object[] keyValues)
at System.Data.Linq.CommonDataServices.GetCachedObject(MetaType type, Object[] keyValues)
at System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc, Object instance)
at System.Data.Linq.ChangeProcessor.BuildEdgeMaps()
at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
at System.Data.Linq.DataContext.SubmitChanges()
at JobTrakDataContext.CreateNewJob(NewJob job, String userName) in D:\JobTrakDataContext.cs:line 1119
誰かが使用するツールやテクニックを持っていますか? 簡単なものがありませんか?
編集: Slace の提案を使用して .net デバッグをセットアップしましたが、.net 3.5 コードはまだ利用できません: http://referencesource.microsoft.com/netframework.aspx
EDIT2 : sirroccoの提案に従って InsertOnSubmit に変更しましたが、それでも同じエラーが発生します。
EDIT3: 生成された SQL をログに記録し、ChangeExceptoinException をキャッチしようとする Sam の提案を実装しました。これらの提案はこれ以上光を当てません。例外がスローされたときに実際に SQL を生成することはありません。
EDIT4: 以下で私に合った答えを見つけました。単なる理論ですが、現在の問題は修正されました。