PostgreSQLとDapper ORMでパラメーターに配列を渡す方法

この記事は公開から3年以上経過しています。

PostgreSQL(Npgsql)+.NET開発でDapper ORMを利用してDBを扱う際に、パラメタライズドクエリのWHERE句のパラメーターなど配列を指定する方法。

サンプルソースコード(C#)

id列の値が{100, 101, 102}の行を抽出するときの例は、以下の通り。

using System;
using Dapper;
using Npgsql;

namespace DapperTest210317
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            using (var sqlCon = new NpgsqlConnection("Host=localhost;Database=test_db;User Id=user;Password=password;"))
            {
                var rows = sqlCon.Query<UserMaster>(
                    "SELECT * FROM USER_MASTER WHERE ID = ANY (@IDS)",
                    new { ids = new[] { 100, 101, 102 } });
                foreach (var row in rows)
                    Console.WriteLine(row);
            }
        }

        // DTO
        private struct UserMaster
        {
            public int id { get; set; }

            public string name { get; set; }
        }
    }
}

WHERE name IN (@IDS)ではなくWHERE name = ANY (@IDS)のようにANY()を使います。

参考ウェブサイトなど

GitHub
StackExchange/Dapper

以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする