如何调试linq to sql InsertOnSubmit语句?

以下代码已经开始工作了。

db.DBUsers.InsertOnSubmit(new DBUser { AllTheStuff = valuesBeyondYourWildestDreams } ); db.SubmitChanges(); 

我的猜测是数据库发生了变化,提交失败,因为映射已关闭。
由于linq visualiser对我不起作用(修复它的奖励点),我想找到另一种方法来了解究竟出了什么问题以及为什么提交失败了。

更新
我试过用

 db.SubmitChanges(ConflictMode.FailOnFirstConflict); 

得到一个例外,但似乎提交工作。 除了数据库中没有实际的新实体。

如果是一个选项,您可以尝试使用SQL Server Profiler – 启动新跟踪,连接到相关数据库,然后选择要捕获的事件。

对于基本的LINQ调试,我发现SP:StmtCompleted (在Stored Procedures下)和SQL:StmtCompleted (在TSQL下)足以向您展示SQL LINQ尝试运行的内容。

如果您发现正在拾取大量不需要的命令,则可以对其进行过滤。 例如,我过滤掉了来自msdbmaster数据库的所有内容。

对于初学者我会这样做:

 db.Log = Console.Out; 

这对于我们调试linq to sql非常有效。

它将日志信息发送到输出窗口。

http://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID=11

您还可以使用LINQPad – 将LINQ代码复制到那里,引用数据库,并将转储放入以有效地调试LINQ。