相关疑难解决方法(0)

调试LINQ to SQL SubmitChanges()

我很难尝试调试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,仍然会出现同样的错误. …

linq debugging linq-to-sql

21
推荐指数
3
解决办法
3万
查看次数

保存LINQ-To-SQL实体时"指定的强制转换无效"错误

应用程序详细信息: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服务器在不同的盒子上可能是一个问题?否则,我完全难过了.

有任何想法吗?

c# asp.net-mvc sql-server-2008 linq-to-sql

5
推荐指数
1
解决办法
4740
查看次数

标签 统计

linq-to-sql ×2

asp.net-mvc ×1

c# ×1

debugging ×1

linq ×1

sql-server-2008 ×1