2010-08-26 4 views
1

LINQ sql/entités que nous avons suffisamment de flexibilité pour écrire des requêtes sélectionmise à jour Flexiable dans LINQ to SQL

Mais que sur les requêtes de mise à jour.

Que faire si je dois faire quelque chose de simple comme ça:

UPDATE suppliers
SET supplier_name = (SELECT customers.name FROM customers WHERE customers.customer_id = suppliers.supplier_id)

LINQ pour Sql i besoin d'exécuter un grand nombre de requêtes de mise à jour pour obtenir ti fait. D'abord j'ai besoin de sélectionner l'entité dont j'ai besoin de mettre à jour et puis j'ai besoin de mettre à jour chacun d'eux, les coutures sont très lentes.

Y at-il un moyen de le rendre simple, ou il n'y a que le mappage de procédure de magasin peut aider dans un tel cas?

+0

Je n'ai pas encore la possibilité d'éditer des questions, donc je suggère ceci ... Si vous mettez à jour le titre de votre question vers quelque chose comme "Linq to SQL Batch Updates", vous obtiendrez peut-être plus de réponses. :) – Peter

Répondre

0

Pour les opérations par lots comme celle-ci, je passerais directement à SQL. Dans LINQ to SQL, vous pouvez utiliser DataContext.ExecuteCommand() pour cela. Par exemple:

db.ExecuteCommand("UPDATE suppliers SET supplier_name = (SELECT customers.name FROM customers WHERE customers.customer_id = suppliers.supplier_id)"); 

Si vous pensez que SQL en ligne est le mal, jetez un oeil à this post by Terry Aney sur l'activation des mises à jour par lots et supprime dans LINQ to SQL. Je n'ai aucune expérience avec ceci mais il semble intéressant.

+0

Inline sql est le mal. Il est très mauvais qu'il n'y ait pas de syntaxe Linq pour la mise à jour. Je regarde quelque chose comme http://www.hookedonlinq.com/UpdateOperator.ashx mais ressemble à Linq à SQL, il n'existe pas, la conception ne permet pas d'avoir une telle opération .. – Juk

+0

J'ai mis à jour ma réponse avec un lien vers une autre solution possible. – Peter

1

Vous voudrez peut-être vérifier PLINQO. Il a ajouté des mises à jour/suppressions par lots et beaucoup plus à LINQ to SQL.

Questions connexes