다중 구문 작업

Dapper 다중 구문 작업 QueryMultiple

  1. QueryMultiple():하나의 연결로 여러 SQL 쿼리를 실행하고 여러 결과 집합을 한 번에 반환합니다.
  2. 여러 SQL 구문은 세미콜론 ;으로 구분합니다.
  3. 반환 타입은 GridReader이며 .Read<T>()를 호출하여 순서대로 각 테이블 데이터를 읽습니다.
  4. 장점:데이터베이스 연결을 한 번만 맺기 때문에 여러 차례 쿼리할 때 발생하는 네트워크 부하를 줄입니다.

예시

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))
            {
                // 여러 SQL 구문은 세미콜론으로 구분
                string sql = "SELECT * FROM Customers; SELECT * FROM Book;";
                // 다중 결과 판독기 가져오기
                var multiReader = db.QueryMultiple(sql);

                // SQL 작성 순서 그대로 읽기
                IEnumerable<Customers> customerList = multiReader.Read<Customers>();
                IEnumerable<Book> bookList = multiReader.Read<Book>();

                multiReader.Dispose(); // 판독기 리소스 해제
            }
            Console.ReadKey();
        }
    }
}Code language: C# (cs)
  1. 읽는 순서는 SQL 순서와 정확히 일치해야 합니다
    먼저 작성한 SELECT부터 Read 해야 하며 순서가 바뀌면 오류가 발생합니다.
  2. 결과 집합 개수보다 많이 Read 를 호출하지 마세요.
  3. MySQL은 연결 문자열에서 다중 구문 지원이 활성화되어 있는지 확인하십시오(보통 기본으로 활성화됨).
  4. QueryMultipleSELECT 조회에만 적합합니다. INSERT·UPDATE·DELETE가 섞인 SQL은 신중하게 사용해야 하며 트랜잭션 사용을 권장합니다.

매개변수가 있는 다중 구문 쿼리

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>();Code language: C# (cs)

다중 구문 작업

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다