当前位置: 首页 > 面试题库 >

您如何查看在LINQ to SQL中的SubmitChanges上导致错误的sql?

步嘉德
2023-03-14
问题内容

我有一些LINQ to SQL,有时会抛出一个

“无法在具有唯一索引’IX_Indexname’的对象’dbo.Table’中插入重复的键行。该语句已终止。”

有什么办法可以打开日志记录或至少调试到datacontext中,以查看在引发错误时正在执行什么sql?

更新:
我应该提一下我对GetChangeSet()方法的了解,我想知道在DataContext上是否有一个属性,该属性可以显示最后执行的SQL,或者在sql异常上可以有一个属性,以显示该SQL。

关于此错误的奇怪之处在于,在变更集中只有一个更新,并且唯一要更改的字段是日期时间字段,该日期时间字段不在导致错误的索引中。


问题答案:

一种简单的方法是使用DataContext.Log属性:

using (MyDataContext ctx = new MyDataContext())
{
    StringWriter sw = new StringWriter();
    ctx.Log = sw;

    // execute some LINQ to SQL operations...

    string sql = sw.ToString();
    // put a breakpoint here, log it to a file, etc...
}


 类似资料:
  • 我不明白为什么会出现这些编译错误: 1: 类型列表中的add(capture#1-of?extends Exec.Bird)方法不适用于参数(Exec.Sparrow) 2: 方法添加(捕获#2-of?扩展Exec.Bird)类型列表中的参数(Exec.鸟)

  • 我们为源和目标定义了一个mapstruct映射器,该映射器也使用Lombok。 null 对于选项3和4,我找不到mapstruct是否支持它的答案。

  • 以下构建设置在使用GCC(4.6.3)的Linux上运行良好,但在使用GCC(4.7.2)的MinGW上则不然。 在 Linux 上,我们有: 这正是我所期待的。在Windows上,我们有 我怀疑这和弱符号有关。也就是说,Linux我们在foo. o有 而且在baro 而在Windows上,我们在foo.o中有这样的功能 而且在baro 因此,没有弱符号可以覆盖。 解决这个问题的最好方法是什么?在

  • 问题内容: 我从数据库中删除记录时遇到问题。几个小时以来,我一直在努力弄清自己在做错什么。我在这里搜索了一些主题,但没有一个回答我在做什么错。我在数据库中制作了这3个表: 这是我的hibernate映射文件: 因此,当我尝试从jTable中删除一条记录时,它给了我一个错误。这是我用来从jTable和数据库中删除数据的代码: ServiceCheck.java 这是错误: 任何帮助将不胜感激! 问题

  • 问题内容: 对于这两个进口; 我收到此错误: 如何解决此错误? 问题答案: 该错误是由您的Eclipse配置引起的。您可以将其减少为警告。更好的是,使用不属于非公共API的Base64编码器。Apache Commons有一个,或者当您已经使用Java 1.8时,请使用。