我很难尝试调试 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: 我已经实现了 Sam 的建议,试图记录生成的 SQL 并捕获 ChangeExceptoinException。这些建议不再阐明,当我的异常被抛出时,我实际上永远不会生成 SQL。
EDIT4: 我在下面找到了一个适合我的答案。它只是一个理论,但它解决了我当前的问题。