2008-10-11 5 views
2

Y a-t-il une façon intelligente de faire cela?Plusieurs suppressions en utilisant LINQ (plus spécifiquement Linq2Nhibernate, mais ...)

Si vous utilisez Linq2Nhibernate, vous semblez vraiment devoir compter sur HQL ou sur les personnes qui aimeraient effectuer plusieurs suppressions à partir d'une base de données (sans les charger et les supprimer un par un)?

Il ne semble pas que Linq2Sql l'ait non plus? Je veux juste quelque chose qui peut faire des choses comme:

DELETE FROM Accounts WHERE amount < 1000 

Toutes les idées?

Répondre

3

La réponse courte est: vous ne pouvez pas.

Vous pouvez faire quelque chose comme:

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

dataContext.DeleteAllOnSubmit(q); 

Mais, parce que le cadre doit suivre les problèmes de concurrence, il sera toujours exécuter des suppressions séparées (donc si vous avez 500 lignes qui seraient supprimés, il envoie 500 supprimer instructions)

Pour une version plus longue et une solution, voir: http://www.aneyfamily.com/terryandann/post/2008/04/Batch-Updates-and-Deletes-with-LINQ-to-SQL.aspx

Questions connexes