Fermer

décembre 3, 2024

Procédure stockée Ensembles de résultats multiples / Blogs / Perficient

Procédure stockée Ensembles de résultats multiples / Blogs / Perficient


Les procédures stockées sont des outils puissants pour exécuter efficacement des opérations de bases de données complexes. EF Core exécute une procédure stockée avec plusieurs jeux de résultats, une technique qui peut améliorer les performances et simplifier la récupération des données.

Il est important de gérer correctement les résultats lorsque vous travaillez avec des procédures stockées qui renvoient plusieurs tables. Entity Framework Core vous permet d’exécuter des procédures stockées et de traiter plusieurs ensembles de résultats. Néanmoins, la logique doit être soigneusement structurée pour garantir que toutes les données sont récupérées et mappées correctement.

Apprenez-en davantage sur le SQL brut et les procédures stockées dans la documentation officielle d’EF Core..

Dans cet exemple, nous utiliserons une procédure stockée qui renvoie plusieurs jeux de résultats représentant différentes données de rapport. Nous allons créer une méthode générique pour exécuter la procédure stockée et mapper les résultats aux modèles correspondants.

1. Définir les modèles

Avant d’exécuter la procédure stockée, nous devons définir des modèles pour contenir les résultats de chaque jeu de résultats. Ces modèles représentent les différents types de données que le SP renverra.

Modèle de jeux de résultats multiples de procédure stockée EF Core

Chaque modèle correspond à l’une des tables de rapport que la procédure stockée renverra.

2. Écriture de la méthode pour exécuter la procédure stockée

Maintenant, créons le ExecuteMultiTableStoredProcAsync méthode pour exécuter la procédure stockée et traiter les multiples jeux de résultats.

Voici comment exécuter la procédure stockée et mapper les jeux de résultats aux modèles appropriés :

a) Définir la signature de la méthode

  • Définir une méthode asynchrone statique qui montre comment EF Core exécute des procédures stockées avec plusieurs jeux de résultats et renvoie un modèle pour chacun.
  • Cette méthode doit accepter le contexte de la base de données (DbContext), nom de la procédure stockée (spName), et tous les paramètres nécessaires (comme currentDate).

Méthode EF Core pour exécuter une procédure stockée plusieurs jeux de résultats

b) Valider les paramètres d’entrée

  • Utiliser ArgumentNullException.ThrowIfNull pour s’assurer que le DbContext et le nom de la procédure stockée (spName) ne sont pas nuls.

Validation des paramètres de procédure stockée EF Core

c) Configurer la connexion et la commande de la base de données

  • Créez une connexion à la base de données en utilisant source.Database.GetDbConnection().
  • Créez une commande à l’aide du connection.CreateCommand() et définissez le texte de la commande sur le nom de la procédure stockée.

EF Core configure la connexion pour la procédure stockée plusieurs jeux de résultats

d) Ajouter des paramètres à la commande

  • Créez tous les paramètres nécessaires pour la procédure stockée (par exemple, @currentDate) en utilisant command.CreateParameter().
  • Ajoutez le paramètre au command.Parameters collection.

Paramètres de commande de procédure stockée EF Core

e) Ouvrez la connexion à la base de données et initialisez le modèle de résultat

  • Ouvrez la connexion de manière asynchrone en utilisant await connection.OpenAsync().
  • Initialisez le MultiTableReportModel pour contenir les ensembles de résultats.

Connexion ouverte EF Core et initialisation de plusieurs modèles d'ensembles de résultats

f) Exécuter la commande et lire les jeux de résultats

  • Utiliser await command.ExecuteReaderAsync() pour exécuter la procédure stockée et obtenir un DbDataReader [See the official API documentation for DbDataReader here].
  • Lisez chaque ensemble de résultats séquentiellement à l’aide du ReadResultSetAsync méthode.
  • Après avoir lu chaque ensemble de résultats, utilisez await reader.NextResultAsync() pour passer au jeu de résultats suivant.

EF Core exécute une procédure stockée et lit plusieurs jeux de résultats

3. Appel de la procédure stockée

Une fois la méthode d’exécution de la procédure stockée configurée, vous pouvez l’appeler depuis la couche de service ou le contrôleur de votre application pour récupérer les données.

Voici comment appeler le ExecuteMultiTableStoredProcAsync méthode dans votre code:

EF Core appelant une procédure stockée avec plusieurs jeux de résultats

4. Accéder aux ensembles de résultats

Maintenant, traitez chaque ensemble de résultats un par un en parcourant les lignes de données et en les mappant à leurs modèles respectifs.

EF Core accède et traite plusieurs jeux de résultats

Dans cet article de blog, nous avons exploré comment EF Core exécute une procédure stockée avec plusieurs jeux de résultats la fonctionnalité permet une gestion efficace des opérations de base de données complexes. Le processus implique la création d’une commande de base de données, l’exécution de la procédure stockée et la gestion de plusieurs jeux de résultats en les lisant individuellement. Cette approche vous permet de mapper les résultats sur différents modèles, facilitant ainsi le traitement et l’utilisation des données au sein de votre application.

Cette technique est utile dans les scénarios dans lesquels un seul SP renvoie plusieurs ensembles de données, comme la génération de rapports complexes contenant plusieurs sections de données.

Pour plus d’informations sur la conception de procédures stockées efficaces, consultez ce guide sur Meilleures pratiques en matière de procédures stockées dans SQL Server.






Source link