使用LINQ进行多次删除(更具体地说,Linq2Nhibernate,但......)

时间:2008-10-11 19:50:57

标签: .net sql linq nhibernate

有没有聪明的方法可以做到这一点?

如果使用Linq2Nhibernate,您似乎真的必须依赖HQL或者喜欢从数据库中进行多次删除(无需逐个加载和删除)?

似乎Linq2Sql似乎没有它?我只想要一些可以做的事情:

DELETE FROM Accounts WHERE amount < 1000

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

简短的回答是:你做不到。

您可以执行以下操作:

var q = from account in dataContext.Accounts
    where account.amount < 1000
    select account;

dataContext.DeleteAllOnSubmit(q);

但是,因为框架需要跟踪并发问题,所以它总是会执行单独的删除(因此,如果你有500行将被删除,它将发送500个删除语句)

有关较长版本和解决方案,请参阅:http://www.aneyfamily.com/terryandann/post/2008/04/Batch-Updates-and-Deletes-with-LINQ-to-SQL.aspx