我很难尝试调试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();
Run Code Online (Sandbox Code Playgroud)
当我运行this.SubmitChanges时,我会发现一些非常奇怪的例外;
Index was outside the bounds of the array.
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪进入我无法进入的位置:
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
Run Code Online (Sandbox Code Playgroud)
有没有人有他们使用的工具或技术?我错过了一些简单的事吗?
编辑:我使用Slace的建议设置.net调试,但.net 3.5代码尚不可用:http://referencesource.microsoft.com/netframework.aspx
EDIT2:根据sirrocco的建议,我已经改为InsertOnSubmit,仍然会出现同样的错误. …
应用程序详细信息:C#,ASP.NET MVC,SQL Server 2008(相同版本和SP级别),Linq-To-SQL ORM
我正在尝试诊断我收到的异常:
"指定演员阵容无效." 在系统的System.Data.Linq.IdentityManager.StandardIdentityManager.SingleKeyManage`2.TryCreateKeyFromValues(Object [] values,V&v)
处的System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache`2.Find(Object [] keyValues)
. System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc )
上的System.Data.Linq.CommonDataServices.GetCachedObject(MetaType type,Object [] keyValues)
中的Data.Linq.IdentityManager.StandardIdentityManager.Find (MetaType type,Object [] keyValues), System 实例)
,System.Data.Linq.ChangeProcessor.BuildEdgeMaps()
处于System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode),
位于System.Data.Linq的System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
处
Repository.Save()等处的.DataContext.SubmitChanges()....
问题是这只发生在我们的服务器上,而不是我们的本地开发盒上.我已将其追溯到我们正在修改的单个属性:
event.SalesForceId = "701Q0000000AOTIIA4";
Run Code Online (Sandbox Code Playgroud)
如果我注释掉那条线,一切正常.
我试过了:
1)打蜡服务器上的所有代码并重新部署.同样的问题.
2)下拉服务器数据库的副本并在本地尝试.工作良好.
3)尝试在同一个盒子上设置的另一个IIS环境.同样的问题.
4)物理地比较(使用AdeptSQL)本地和远程模式.没有区别.
5)验证两列(本地和远程)的数据类型是否相同.此外,此列是另一个表的FK.我确认两者都是相同的数据类型,直到整理.
服务器是Windows Server 2008,本地框是Windows 7 x64.两者都设置了所有重要的更新.
我唯一能想到的可能是因为数据库和Web服务器在不同的盒子上可能是一个问题?否则,我完全难过了.
有任何想法吗?