ASP.NET Dapperを使ってwhere句を使用する

ASP.NET Dapperを使ってwhere句を使用する

ASP.NET Coreで、Dapperを使ってwhere句を使用するまでの手順を記述してます。

環境

  • OS windows10 pro 64bit
  • VSCODE 1.56.2
  • postgres sql 13.3
  • .NET Core 3.1.409

Dapper追加

「Dapper」と、DB接続に「Npgsql」を使用してます。

nugetで、どちらも追加してます。

nugetを追加したら、「F1」キーを押下して「NuGet Package Manager: Add Package」を選択して
「Dapper」と「Npgsql」と入力してバージョンを指定すれば、追加することができます。

「.csproj」は以下の通りです。

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>    
    <PackageReference Include="Npgsql" Version="5.0.5"/>
    <PackageReference Include="Dapper" Version="2.0.90"/>
  </ItemGroup>
</Project>

ここで利用する「postgres sql」の「book」テーブルには、以下のデータが入ってます。

Model作成

Modelフォルダを作成して「BookItem.cs」を以下の内容で作成します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Book.Models
{
    public class BookItem
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}

where句を使用

モジュール「Book.Models」を使用して、以下のクエリを実行すれば、idが「1」のデータを取得することができます。

connection.Query<BookItem>("SELECT * FROM book WHERE id = @ID", new { ID = 1 });

where in は、以下のように使用します。

connection.Query<BookItem>(
"SELECT * FROM book WHERE id = ANY (@ids)",
new { ids = new[] { 1, 2 } });

以下でも可能です。

connection.Query<BookItem>(
"SELECT * FROM book WHERE id in (@ids1,@ids2)",
new { ids1 = 1, ids2 = 2 });