こんにちは、川崎モンスターのまっずです。
今回は、前回の記事のおまけです。
kawasaki-monster.hatenablog.jp
前回の状態で実際にビルドして実行すると、以下のような画面が表示されて、うまく動かない状態になります。
A database operation failed while processing the request.
MySqlException: Unknown database 'mydatabase'
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Applying existing migrations for ApplicationDbContext may resolve this issue
There are migrations for ApplicationDbContext that have not been applied to the database
- 00000000000000_CreateIdentitySchema
Apply Migrations
In Visual Studio, you can use the Package Manager Console to apply pending migrations to the database:
PM> Update-Database
Alternatively, you can apply pending migrations from a command prompt at your project directory:> dotnet ef database update
これは、マイグレーションを一度も行っていないため、MySQL側のデータベースにデータを書き込む準備が何も出来ていない状態だからです。なので、上記の画面が表示された場合、その画面の中にある「Apply Migrations」のボタンを押しても良いですが、VisualStudio側のパッケージマネージャ(通称PM)でも同様の処理が実行できます。
マイグレーションとは
データベースを削除してから作り直すと,DBに保存されている情報が全て削除されてしまいます. こういった事態を回避する方法として、データベースマイグレーションを行う方法があります。 マイグレーションとは、DBに保存されているデータを保持したまま、テーブルの作成やカラムの変更などを行うための機能です。
パッケージマネージャーコンソールを起動するには、VisualStudioの[表示]-[その他のウィンドウ]-[パッケージマネージャーコンソール]を選択します。
そうすると、VisualStudioの画面下部にパッケージマネージャーコンソールが表示されるので、その画面で、「Update-Database」と入力し、エンターキーを押します。そうすると、ソリューションエクスプローラーのプロジェクト配下のData-Migrations-00000000000000_CreateIdentitySchema.csを実行し、MySQLにデータベースを再構築します。
下のMySQL WorkBenchの画面で、左下にmydatabaseが追加され、中のテーブルも追加されていることが分かります。
これで、ようやくasp.net Core 2.0から、MySQLに接続できたことになります。
念のため、起動したサービス画面からユーザーを追加し、きちんとMySQL側に保存されているか確認してみましょう。
今回参考にしたリンク先の紹介
Getting started with ASP.NET Core and MySQL Connector/NET | InsideMySQL.com