Opérations multi‑instructions

Opérations multi‑instructions Dapper : QueryMultiple

  1. QueryMultiple() : exécute plusieurs requêtes SQL sur une seule connexion et retourne plusieurs ensembles de résultats en une seule fois.
  2. Séparez les différentes instructions SQL par un point‑virgule ;.
  3. Le type de retour est GridReader. Appelez .Read<T>() pour lire successivement chaque jeu de données dans l’ordre d’écriture.
  4. Atout : une seule connexion base de données est ouverte, ce qui réduit la surcharge réseau liée aux multiples requêtes.

Exemple

using System;
using System.Collections.Generic;
using System.Data;
using MySql.Data.MySqlClient;
using Dapper;
using System.Configuration;

namespace ConsoleApp4
{
    public class Customers
    {
        public int CustomerID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
    }

    public class Book
    {
        public string Title { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var connStr = ConfigurationManager.ConnectionStrings["CustomerConnection"].ConnectionString;
            using (IDbConnection db = new MySqlConnection(connStr))
            {
                // Plusieurs SQL séparés par des points‑virgules
                string sql = "SELECT * FROM Customers; SELECT * FROM Book;";
                // Récupérer le lecteur multi‑résultats
                var multiReader = db.QueryMultiple(sql);

                // Lire dans l’ordre des instructions SQL
                IEnumerable<Customers> customerList = multiReader.Read<Customers>();
                IEnumerable<Book> bookList = multiReader.Read<Book>();

                multiReader.Dispose(); // Libérer les ressources du lecteur
            }
            Console.ReadKey();
        }
    }
}Langage du code : C# (cs)
  1. L’ordre de lecture doit correspondre strictement à l’ordre des requêtes SQL
    Le premier SELECT doit être lu en premier ; un ordre erroné provoque une erreur.
  2. N’appelez pas Read au‑delà du nombre d’ensembles de résultats disponibles.
  3. Avec MySQL, vérifiez que le support multi‑instructions est activé dans la chaîne de connexion (généralement activé par défaut).
  4. QueryMultiple est réservé aux requêtes SELECT ; soyez prudent avec des requêtes mélangeant INSERT / UPDATE / DELETE, préférez les transactions.

Requête multi‑instructions avec paramètres

string sql = "SELECT * FROM student WHERE Id=@id; SELECT * FROM book WHERE Id=@id;";
using var multiReader = db.QueryMultiple(sql, new { id = 1 });
var stu = multiReader.ReadFirstOrDefault<Student>();
var book = multiReader.ReadFirstOrDefault<Book>();Langage du code : C# (cs)

Opérations multi‑instructions

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *