gpt4 book ai didi

linq - 调试 LINQ to SQL SubmitChanges()

转载 作者:行者123 更新时间:2023-12-03 01:46:37 28 4
gpt4 key购买 nike

我在尝试调试 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

编辑2:我已按照 Sirrocco 的建议更改为 InsertOnSubmit,但仍然遇到相同的错误。

编辑3:我已经实现了 Sam 的建议,尝试记录生成的 SQL 并捕获 ChangeExceptoinException。这些建议并没有提供任何更多的帮助,当我的异常被抛出时,我实际上从未真正生成 SQL。

编辑4:我在下面找到了一个对我有用的答案。这只是一个理论,但它解决了我当前的问题。

最佳答案

我总是发现准确了解 SubmitChanges() 方法中正在将哪些更改发送到 DataContext 很有用。

我使用DataContext.GetChangeSet()方法,它返回 ChangeSet对象实例,包含 3 个已添加、修改或删除的对象的只读 IList。

您可以在 SubmitChanges 方法调用之前放置一个断点,并添加一个包含以下内容的监视(或快速监视):

ctx.GetChangeSet();

其中 ctx 是 DataContext 的当前实例,然后您将能够跟踪在 SubmitChanges 调用中生效的所有更改。

关于linq - 调试 LINQ to SQL SubmitChanges(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/86685/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com