【发布时间】:2017-01-02 06:49:22
【问题描述】:
我有一堆删除查询,如下所示:-
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 我一定会试试的。
-
“不起作用”对我不起作用。你得到一个错误还是没有达到你的预期?我不知道它是否真的有效。这对我来说很有意义。
标签: sql-server linq entity-framework-6