18
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

.NET CoreでMySQLにアクセスする(2017年5月編)

Last updated at Posted at 2017-05-28

.NET Coreはいいと思うのだけれど、MySQLとかを利用できなければ結局Linux上とかでは使わないな・・・というのが正直なところでした(まあ、今となってはSQLServerもLinuxで動きますが)。

一方、MySQL用のドORM?はサードパーティ系しかなく、「うーん」って感じでした。が、しばらく動向を追わないうちに、2017年3月にOracleからオフィシャルのMySQL.Data.EntityFrameworkCoreというのが出たようなので試してみます。

この記事が最後の調査となればいいのですが。。。

project.jsonが廃止され、.csprojファイルになったんですね。。。

環境

私はMac上で利用しています。.NET Coreのバージョン(これややこしいですが)はいわゆる1.0.4です。

準備とインストール

DBの準備

とりあえず、ローカルのMySQLにmemberテーブルを作成し、id,name,emailを作りました。
適当にデータも追加しておきます。

create table member
(
	id int primary key auto_increment,
	name varchar(32),
	email varchar(32)
);

作業場の作成

今回はコンソールアプリとして実装してみます。

cd 
mkdir mysql
cd mysql
dotnet new console

MySQL.Data.EntityFrameworkCoreのインストール

バージョンを指定しないと怒られました。
インストールすると依存関連ファイルも追加されます。

dotnet add package MySql.Data.EntityFrameworkCore -v 7.0.7-m61

インストールしたら、

dotnet restore

で関連ファイルをダウンロードします。

実装

いろいろな書き方ができますが、過去記事との互換性を重視して、シンプルに書きます。

コード

using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using MySQL.Data.EntityFrameworkCore.Extensions;

namespace mysql
{
    //接続準備(まあ、普通は別のcsに書く)
    //モデル
    public class Member
    {
        public int id{get;set;}
        public string name{get;set;}
        public string email {get;set;}
    }

    //DbContext(DBとクラス情報をマップする)
    public class MyContext:DbContext
    {
        public DbSet<Member> Members{get;set;}

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            => optionsBuilder.UseMySQL(@"server=localhost;database=testdb;userid=root;password=root;sslmode=none;");
    }

    //メインのコード
    class Program
    {
        static void Main(string[] args)
        {
            using(var context = new MyContext())
            {
                var ret = context.Members.ToList();

                foreach(var x in ret)
                {
                    Console.WriteLine($"{x.id} {x.name}");
                }
            }
        }
    }
}

実行

dotnet run

とりあえず動きました。以上です。

18
14
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
18
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?