この記事は公開から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
以上です。