DataBaseは、SQL Serverで、データはAdventureWorks2022をいれています
→AdventureWorksについて

主キーで絞り込みのように1行データを取得する場合

メソッド 0件 1件 2件以上
QuerySingle 例外発生 レコード 例外発生
QuerySingleOrDefault null レコード 例外発生
QueryFirst null レコード 最初のレコード

※Asyncをつければ非同期版

サンプル:
Employee.cs

namespace SampleDapper.Models.HumanResources
{
    public class Employee
    {
        // テーブルから取得したい列の情報を定義
        public int BusinessEntityID { get; set; }
        public string JobTitle { get; set; } = null!;
        public DateTime BirthDate { get; set; }
        public char Gender { get; set; }
        public DateTime HireDate { get; set; }
    }
}

Program.cs

using Dapper;
using Microsoft.Data.SqlClient;
using Microsoft.Extensions.Configuration;
using SampleDapper.Models.HumanResources;

try
{
    var config = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile(@"appsettings.json")
                    .Build();

    var connectStr = config["ConnectionStrings:DefaultConnection"];

    using (var connection = new SqlConnection(connectStr))
    {
        connection.Open();

        // 主キーで1件取得するSQL
        var sql = "SELECT * FROM HumanResources.Employee WHERE BusinessEntityID = @BusinessEntityID";

        // SQL中のパラメータに渡す値を設定
        var parameters = new { BusinessEntityID = 36 };

        var record = connection.QuerySingle<Employee>(sql, parameters);
    }
}
catch(Exception ex)
{
    Console.Write(ex.ToString());
}
投稿日時: 2025-09-13 18:01:13
更新日時: 2025-09-14 02:02:14

DataBaseは、SQL Serverで、データはAdventureWorks2022をいれています
→AdventureWorksについて

Count、Sum、Avg、Max、Minなどの1データ取得する場合に以下メソッドを使用します

  • ExecuteScalar
  • ExecuteScalarAsync

サンプル:

using Dapper;
using Microsoft.Data.SqlClient;
using Microsoft.Extensions.Configuration;

try
{
    var config = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile(@"appsettings.json")
                    .Build();

    var connectStr = config["ConnectionStrings:DefaultConnection"];

    using (var connection = new SqlConnection(connectStr))
    {
        connection.Open();

        var sql = "SELECT COUNT(*) FROM HumanResources.Employee";
        var count = connection.ExecuteScalar<int>(sql);
    }
}
catch(Exception ex)
{
    Console.Write(ex.ToString());
}
投稿日時: 2025-09-13 15:17:13
更新日時: 2025-09-13 18:02:13

気になるORMをためしてみたいとかあると、DBに何かしらデータをいれたいのですが、
そんなときに便利なのが Adventure Worksですね

これは、Microsoftが提供するサンプルデータベースで SQL Server向けに用意された
架空の会社のデータセットです

データベースに復元する手順

AdventureWorks サンプル データベース

https://learn.microsoft.com/ja-jp/sql/samples/adventureworks-install-configure?view=sql-server-ver17&tabs=ssms

このサイトに説明が、書いてあるので簡潔な手順として以下にメモを残しておきます

AdventureWorks2022.bakをダウンロードして、
SQL Serverでデータベースの項目で右クリックして、データベースの復元を選択し、
ダウンロードしたファイルを指定することで、復元ができます

参考: ネットを検索すると出てくるリレーションの図

appsettings.json

{
  "ConnectionStrings": {
    "DefaultConnection": "Server={サーバー名}; Initial Catalog={DB名}; Integrated Security=True;TrustServerCertificate=True;"
  }
}

※Integrated Security=True ・・・windows認証(実運用ではなく、学習用で試すだけなのでwindows認証を使っています)
※TrustServerCertificate=True; ・・・開発環境のようにちゃんとした証明書をつかっていない場合に信用して実行する

Microsoft.Data.SqlClient
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Json
をいれてあります

using Microsoft.Data.SqlClient;
using Microsoft.Extensions.Configuration;
using SampleDapper.Models.HumanResources;

try
{
    var config = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile(@"appsettings.json")
                    .Build();

    var connectStr = config["ConnectionStrings:DefaultConnection"];

    using (var connection = new SqlConnection(connectStr))
    {

    }
}
catch(Exception ex)
{
    Console.Write(ex.ToString());
}
投稿日時: 2025-09-13 12:24:13
更新日時: 2025-09-14 01:29:14

最近の投稿

最近のコメント

タグ

アーカイブ

その他