LoginSignup
8
11

More than 5 years have passed since last update.

ASP.NET Core(Dapper)でMySQLを使う

Last updated at Posted at 2016-11-17

以前、Entiry FrameworkでMySQLを利用する方法を書きましたが、仕事でDapperを使うかもしれないのメモ。使う理由は高速化。DapperだとADO.NETを利用するのとほぼかわらないとか。

環境

環境構築については私の記事もありますが、少々古いのでここが参考になるかと。

なお、.NET Coreでは新たに提供されたdotnet newコマンドで基本的なテンプレートを作成可能です。詳しくはこちらのサイトが参考になります。

下準備

MySQLにテーブルを作成する

今回はサンプルなので簡単なテーブルにします。なお、Entity Frameworkを利用するにはテーブルに主キーが必要なので定義しておきましょう。

membersというテーブルを作り、idとnameとemailのカラムを作ります。
サンプルデータもインサートしておきます。

#CREATE TABLE
create table members(
    id int primary key auto_increment,
    name varchar(32),
    email varchar(64)
);

#SAMPLE INSERT
insert into members(name,email) values('hoge','hoge@hoge.com');
insert into members(name,email) values('foo','foo@foo.com');

yoでConsole Applicationテンプレートを生成

yo -> ASP.NET -> Console Applicationと選択し、テンプレートを生成します。
初期状態で下記3つのファイルが出来ているはずです。

dotnet new コマンドでも生成可能です。

  • .gitignore
  • Program.cs
  • project.json

必要なのは下記2つだけ。

project.jsonの編集

project.jsonのdependenciesにPomeloを追加し、restoreします。

以下、dependenciesだけ抜粋。

  "dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.1"
    },
+    "Dapper": "1.50.2",
+   "MySqlConnector": "0.*"
  },

package.jsonを編集したら忘れずにrestoreし、必要なファイルを取得します。

dotnet restore

Program.csを編集

今回はMemberクラスを作成しマップしましたが、マップしなくても値は取得できるようです。

using System;
using Dapper;
using MySql.Data.MySqlClient;

namespace myapp2
{
    public class Program
    {

        //model
        public class Member
        {
            public int id {get; set;}
            public string name {get; set;}
            public string email {get; set;}
        }

        //Main
        public static void Main(string[] args)
        {
            using(var connection = new MySqlConnection("server=localhost;database=testdb;uid=root;pwd=root"))
            {
                connection.Open();

                //dapper
                var members = connection.Query<Member>("select * from members");

                foreach(var member in members)
                {
                    Console.WriteLine(member.name + " " + member.email);
                }
            }
        }
    }
}

実行する

コーディングが完了したら実行します。

dotnet run

hoge hoge@hoge.com
foo foo@foo.com

うまくいったようです。

8
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
11