gpt4 book ai didi

sql - 如何解决 Linq to SQL 对 DeleteAllOnSubmit 中的每个项目使用单独的 SQL DELETE 语句这一事实

转载 作者:行者123 更新时间:2023-12-01 12:58:48 25 4
gpt4 key购买 nike

当使用如下所示的 DeleteAllOnSubmit 语句时(我省略了 DataContext,因为我在这里使用的是 LinqPad)

var deleteUs = Foo.Take(9658);
Foo.DeleteAllOnSubmit(deleteUs);
SubmitChanges();

生成的 SQL 代码如下所示:

SELECT TOP (9658) [t0].[id] FROM [Foo] AS [t0]
GO

-- Region Parameters
DECLARE @p0 Int SET @p0 = 1
-- EndRegion
DELETE FROM [Foo] WHERE [id] = @p0
GO

-- Region Parameters
DECLARE @p0 Int SET @p0 = 2
-- EndRegion
DELETE FROM [Foo] WHERE [id] = @p0
GO
... and so on

C# 代码中的第 2 行无法知道第 1 行转换为 SELECT TOP 语句,使用 DELETE TOP 语句会快得多。

问题:如何在不借助 SQL 的情况下解决这个问题?有没有办法让 Linq 语句转换为 DELETE TOP 或类似的东西?

最佳答案

带有扩展方法的自定义查询生成器应该允许您执行批量删除:

http://www.aneyfamily.com/terryandann/post/2008/04/Batch-Updates-and-Deletes-with-LINQ-to-SQL.aspx

不过我不确定它是否支持 Take 运算符。

关于sql - 如何解决 Linq to SQL 对 DeleteAllOnSubmit 中的每个项目使用单独的 SQL DELETE 语句这一事实,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8010608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com