fre*_*hie 0 c# linq linq-to-sql
我有一个看起来像这样的查询:
var TheDataToDelete = (from x in MyDC.SomeTable
where x.....
select x).ToList();
if (TheDataToDelete.Count > 0)
{
MyDC.SomeTable.DeleteAllOnSubmit(TheDataToDelete);
MyDC.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)
有大约10K行要删除,在我的错误日志中,我有时(每周一次)看到此错误:
Inner Exception Type: System.ComponentModel.Win32Exception
Inner Exception: The wait operation timed out
Inner Source:
Exception Type: System.Data.SqlClient.SqlException
Exception: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Run Code Online (Sandbox Code Playgroud)
我的代码有什么问题,我需要修改什么来修复它?
正如@Shyju建议的那样,使用Any().但也删除,ToList()因为它已经执行查询.不添加它将使查询具有延迟执行.因为那时只做Any()查询会更有效率.
var TheDataToDelete = (from x in MyDC.SomeTable
where x.....
select x);
if (TheDataToDelete.AnY())
{
MyDC.SomeTable.DeleteAllOnSubmit(TheDataToDelete);
MyDC.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)
哪个会产生SQL查询;
SELECT
(CASE
WHEN EXISTS(
SELECT x
FROM MyDC.SomeTable
WHERE x
) THEN 1
ELSE 0
END) AS [value]
Run Code Online (Sandbox Code Playgroud)
这是快速和有效的.
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |