今日もちょいつか

お酒の飲み過ぎか、それとも歳のせいなのか毎日ちょっぴり疲れ気味なフリーのソフト屋です。ソフト開発の話題をblogにしてみます。

ASP.NET Core MVC Dapperを使ったMySQLアクセス

前回は、Entiry Framework を使ったMySQLの操作をまとめてみました。
heinlein.hatenablog.com
SQLを直接書かないし、少ないコードでここまでやってくれるのかって感じでしたが
実際にシステムを開発しようとすると、
Entiry Framework の形に合わせなくてはならず
複雑な処理をプログラミングするのにちょっと難しいと感じていました。

そこで、発見したのが「Dapper」です。
直接SQL文を利用することができて自由度が高そうです。
ADO.NET より扱いやすくて、Entiry Frameworkより自由な感じです。
では、MySQLからテーブルの内容を読み込んでみます。
動作は、Visual Studio Community 2017 for Mac で行なっています。

NuGetでパッケージ追加

Dapperを利用するのに必要な「Dapper」パッケージを追加します。
MySQLを扱うので「MySql.Data」も同様に追加します。

データベース環境とModel「ItemGrp.cs」は前回のEntiry Frameworkで使ったものを
そのまま使います。

サンプルコード

適当なControllerにコードを記述します。

using Dapper;
using MySql.Data.MySqlClient;
public IActionResult Index()
{
    string ItemGrpNames = "";
    using (var connection = new MySqlConnection("server=localhost;database=testdb;uid=root;pwd=パスワード"))
    {
        connection.Open();

        var itemGrps = connection.Query<ItemGrp>("SELECT * FROM ItemGrp");

        foreach (var itemGrp in itemGrps)
        {
            ItemGrpNames += " - " + itemGrp.ItemGrpName;
        }
    }
    ViewData["ItemData"] = ItemGrpNames;
    return View();
}

コード自体はすごくわかりやすく記述することができます。
今までプログラミングしていた形に近いのですんなりと書けそうです。
基本的にはEntiry Frameworkを使いますが
Entiry Frameworkでの記述が難しい時にはDapperを使うと
なんとかシステム開発を進めて行けそうです。