前提条件
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データを保存するデータベースの場合
データ追加
using (var database = new HogedatabaseContext())
{
await database.User.AddAsync(new User());
await database.SaveChangesAsync();
}
変更
using (var database = new HogedatabaseContext())
{
User currentData = database.User.First();
if(currentData != null){
currentData.Data = new User();
await database.SaveChangesAsync();
}
}
削除
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