ASP.NET coreでConoHaDB(mariaDB)を操作する。


前提条件

ConoHaDBでデータベースを作成済み

ASP.NET core アプリケーションのプロジェクトをVisual Studioで作成済み

準備

EF Core ツールのインストール

データベースのスキャフォールディングに利用します。

NuGetから最新版をダウンロードしてください。

Microsoft.EntityFrameworkCore.Tools

データベースプロバイダーのインストール

ConoHaDBではmariaDBが採用されています。

なので、プロバイダーには Pomelo.EntityFrameworkCore.MySql を使用することにします。

NuGetパッケージマネージャーから最新版をインストールして下さい。

スキャフォールディング

ConoHaDBの設定

まずConoHaの方でアクセス用ユーザーの作成をします。

ユーザー情報は「一般ユーザー」、接続許可ホストは % にしてください。

データベース名、接続ポート, ホスト名のグローバルネットワークの値をメモしておいて下さい。

VisualStudio側の作業

ツール -> NuGetパッケージマネージャ -> パッケージマネージャコンソール を起動してください。
コンソールで次のコマンド

Scaffold-DbContext "Server={グローバルネットワークの値},{ポート番号};Database={データベース名};User={ユーザー名};Password={パスワード};" "Pomelo.EntityFrameworkCore.MySql"

を入力してEnter。

しばらくすると、モデルクラスが作成されます。

データベースにアクセスしてみる

なんちゃらdatabaseContextクラスを利用します。このクラスはIDisposableインターフェースを実装しているので、usingステートメントが使えます。

例:Userデータを保存するデータベースの場合

データ追加

add_sample
using (var database = new HogedatabaseContext())
{
    await database.User.AddAsync(new User());
    await database.SaveChangesAsync();
}

変更

change_sample
using (var database = new HogedatabaseContext())
{
    User currentData = database.User.First();

    if(currentData != null){
        currentData.Data = new User();
        await database.SaveChangesAsync();
    }
}

削除

remove_sample
using (var database = new HogedatabaseContext())
{
    User currentData = database.User.First();

    if(currentData != null){
        database.User.Remove(currentData);
        await database.SaveChangesAsync();
    }
}

参考資料

既存のデータベースを使用した ASP.NET Core での EF Core の概要

Pomelo.EntityFrameworkCore.MySql

"EF Core ツール リファレンス (パッケージ マネージャー コンソール) - EF Core