我刪除查詢束像以下: -的LINQ如何運行在塊查詢
DELETE FROM [Entry]
WHERE CompanyId = 1
AND EmployeeId IN (3, 4, 6, 7, 14, 17, 20, 21, 22,....100 more)
AND Entry_Date = '2016-12-01'
AND Entry_Method = 'I'
所以在我的代碼,我運行的查詢這份名單如下: -
using (var ctx = new ApplicationDbContext(schemaName))
{
foreach (var item in queries)
{
ctx.Database.ExecuteSqlCommand(item);
}
}
但由於大量的查詢執行它會在sql上創建一個鎖,因此我決定在塊中執行查詢,所以我找到了下面的代碼: -
SET ROWCOUNT 500
delete_more:
DELETE FROM [Entry]
WHERE CompanyId = 1
AND EmployeeId IN (3, 4, 6, 7, 14, 17, 20, 21, 22,....100 more)
AND Entry_Date = '2016-12-01'
AND Entry_Method = 'I'
IF @@ROWCOUNT > 0 GOTO delete_more
SET ROWCOUNT 0
現在的問題是我如何運行這個東西,因爲我以前通過ctx.Database.ExecuteSqlCommand
運行它?
我可以在Linq中運行這個塊查詢代碼的方式是什麼?
你有沒有分裂名單小塊並刪除它們一個大塊嘗試將整個語句放在一個字符串中,並使用'ExecuteSqlCommand'運行? –
@ Nick.McDermaid我一定會試試這個。 – Anup
「不起作用」不適用於我。你有沒有遇到錯誤,或者它沒有達到你的期望?我不知道它是否真的有效。這對我來說是有道理的。 –