Est-il possible d'implémenter la mise en lot de plusieurs appels de procédures stockées (effectuer des mises à jour/suppressions) dans ADO.NET sans recourir à des DataAdapters?Traitement par lots dans ADO.NET sans DataAdapters
2
A
Répondre
2
Vous pouvez essayer d'utiliser System.Data.SqlClient.SqlCommandSet. C'est en fait interne, mais Ayende made a wrapper to make it public. Le code est actuellement hébergé en sourceforge.
1
Votre texte SQL peut contenir plusieurs commandes. Si vous renvoyez plusieurs ensembles de résultats, vous pouvez utiliser un DataReader et utiliser la fonction NextResult. Ce que je fais souvent est de stocker le SQL à exécuter en tant que ressource incorporée, puis charger ce texte. S'il contient des paramètres, définissez les paramètres comme vous le feriez normalement.
Par exemple, j'ai un fichier:
UPDATE dbo.QuotePricedLineItem
SET fkQuoteVendorLineSet = NULL
FROM dbo.QuotePricedLineItem qpli
INNER JOIN dbo.QuoteLineItem qli ON qpli.Id = qli.Id
WHERE qli.fkQuote = @quoteId AND qpli.fkQuoteVendorLineSet = @ciscoConfigId
DELETE CiscoQuoteLineItem
FROM CiscoQuoteLineItem cqli
INNER JOIN QuoteLineItem qli ON cqli.Id = qli.Id
WHERE qli.fkQuote = @quoteId AND cqli.fkCiscoQuoteVendorLineSet = @ciscoConfigId
que j'exécute en tant que tel:
using (SqlConnection conn = DbUtils.CreateConnection() as SqlConnection)
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = MvcApplication.GetResource("SQL.DemoteCiscoQuoteLineItems.sql");
cmd.Parameters.AddWithValue("@quoteId", q.Id);
cmd.Parameters.AddWithValue("@ciscoConfigId", configSetId);
cmd.ExecuteNonQuery();
}
Notez que MvcApplication.GetResource n'est pas une fonction intégrée - il est celui que vous devez écrire ... voici le mien:
public static string GetResource(string p)
{
Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("CortexQuoting.Res." + p);
if (s == null) return null;
StreamReader sw = new StreamReader(s);
string ss = sw.ReadToEnd();
sw.Close();
return ss;
}
Questions connexes
- 1. Traitement par lots dans Scala
- 2. rails paperclip traitement par lots
- 3. Traitement par lots SVCUtil ou WSDL
- 4. Traitement par lots dans le tableau en utilisant PHP
- 5. Comment accélérer le travail de traitement par lots dans Coldfusion?
- 6. Comment planifier un traitement par lots dans asp.net
- 7. Fichier de traitement par lots: Mot de passe Étoiles/Cercles
- 8. Démarrage automatique d'un fichier de traitement par lots sous Windows
- 9. Renommer un fichier avec un script de traitement par lots
- 10. Surveillance par lots Java
- 11. Comment préserver les variables dans les scripts de traitement par lots dans les boucles "for"?
- 12. Suppression de fichiers temporaires dans un fichier de traitement par lots
- 13. Processus de traitement par lots côté serveur dans un environnement d'hébergement partagé
- 14. Rechercher des fichiers dans un script de traitement par lots et traiter ces fichiers?
- 15. Boîte de notification non modale du script de traitement par lots
- 16. Problème de traitement par lots SQL Server avec la gestion des erreurs
- 17. Indenteurs et embellisseurs de code par lots
- 18. Surveillance/reprise pour un graphique de tâches complexes pour le traitement par lots
- 19. Insertions SQL par lots dans .NET
- 20. sortie par lots # dans SQL Server
- 21. Comment exécuter un script de traitement par lots (fichier .bat) à partir d'eclipse
- 22. Obtention d'un niveau d'erreur à partir d'un fichier de traitement par lots appelé
- 23. Utilisation de cURL et d'itérations de lignes de traitement par lots
- 24. comment remplacer les noms récursivement via l'opération de traitement par lots Windows
- 25. Y at-il un délai d'expiration pour un fichier de traitement par lots?
- 26. Paralléliser une application par lots
- 27. Suppression d'un fichier à partir d'un fichier de traitement par lots donnant une erreur
- 28. Exécution des instructions de mise à jour Oracle en mode de traitement par lots
- 29. Création d'instructions sql par lots
- 30. Exécution d'un script de traitement par lots Windows pour démarrer plusieurs fichiers