我有一些LINQ to SQL,有时会抛出一个
"无法在对象'dbo.Table'中插入具有唯一索引'IX_Indexname'的重复键行.该语句已被终止."
有没有什么方法可以打开日志记录或至少调试到datacontext,看看在出现错误时正在执行什么SQL?
更新: 我应该提到我知道的GetChangeSet()
方法,我想知道如果有一个显示已执行的最后一个SQL,或在SQL异常,显示了SQL财产上的DataContext属性.
关于此错误的奇怪之处在于,在更改集中,只有一个更新,并且唯一正在更改的字段是不在导致错误的索引中的日期时间字段.
一个简单的方法是使用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... }