奇怪的LINQ to SQL行为(BUG?)
问题描述:
我们对LINQ to SQL代码有这个非常奇怪的问题。奇怪的LINQ to SQL行为(BUG?)
考虑以下代码片段:
var wissen = db.Table.Where(f => f.Name == somevalue);
db.Table.DeleteAllOnSubmit(wissen);
db.SubmitChanges();
这个工程我们的开发服务器上不如预期,但是当我们正在部署这对我们的生产服务器时,它不会给任何错误,但它不没有删除任何东西尽管如此。
当我们用这个替换此代码:
db.ExecuteCommand("DELETE FROM Table WHERE Name = {0}", somevalue);
事情的工作就好了。
该解决方法工作得很好,但我们很乐意知道究竟出了什么问题。
期待您的意见:)
迪特
答
您是否尝试过做生产机器上的SQL事件探查器跟踪来找出哪些正在发出SQL?
这应该可以帮助您解决问题。
答
是db
a System.Data.Linq.DataContext
?如果没有,请尝试使用一个。如果是,请在实例化后调用db.Log = Console.Out
,并将所有生成的SQL发送到Visual Studio输出控制台。这应该显示出现了什么问题。
如果你不能在服务器上运行VS,输出记录到一个文本文件:
StreamWriter sw = new StreamWriter(pathToLogFile);
db.Log = sw;
// do your queries here
sw.Flush();
+0
+1日志L2S输出到文件 – jeroenh 2009-12-26 22:11:36
如果您在那里下降一个断点,然后看看“WISSEN”,它有什么成员在运行生产服务器时运行?这是我的第一个猜测。 – AlecZorab 2009-12-22 18:14:02