如何调试linq to sql InsertOnSubmit语句?

时间:2009-11-02 09:22:16

标签: c# .net linq-to-sql debugging

以下代码已经停止运作。

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

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

更新
我尝试使用

db.SubmitChanges(ConflictMode.FailOnFirstConflict);

获取异常,但似乎提交有效。除了数据库中没有实际的新实体。

4 个答案:

答案 0 :(得分:2)

对于初学者我会这样做:

db.Log = Console.Out;

答案 1 :(得分:0)

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

对于基本的LINQ调试,我发现 SP:StmtCompleted (在存储过程下)和 SQL:StmtCompleted (在TSQL下)足以向您展示SQL LINQ正试图运行。

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

答案 2 :(得分:0)

这对我们调试linq到sql很有效。

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

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

答案 3 :(得分:0)

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