川崎モンスター

プログラムなどの技術的な内容をまとめていきます

【C#】ASP.NET CoreでMySQLを利用する(MySQL接続編)

f:id:madsoldiers:20171023010547j:plain

こんにちは、川崎モンスターのまっずです。

今回は、前回の記事のおまけです。

kawasaki-monster.hatenablog.jp

前回の状態で実際にビルドして実行すると、以下のような画面が表示されて、うまく動かない状態になります。  

f:id:madsoldiers:20171023153502p:plain

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に保存されているデータを保持したまま、テーブルの作成やカラムの変更などを行うための機能です。

3. データベースマイグレーション | densan-labs.net

 

パッケージマネージャーコンソールを起動するには、VisualStudioの[表示]-[その他のウィンドウ]-[パッケージマネージャーコンソール]を選択します。

f:id:madsoldiers:20171023153713p:plain

そうすると、VisualStudioの画面下部にパッケージマネージャーコンソールが表示されるので、その画面で、「Update-Database」と入力し、エンターキーを押します。そうすると、ソリューションエクスプローラーのプロジェクト配下のData-Migrations-00000000000000_CreateIdentitySchema.csを実行し、MySQLにデータベースを再構築します。

 

下のMySQL WorkBenchの画面で、左下にmydatabaseが追加され、中のテーブルも追加されていることが分かります。

f:id:madsoldiers:20171023183452p:plain

これで、ようやくasp.net Core 2.0から、MySQLに接続できたことになります。

念のため、起動したサービス画面からユーザーを追加し、きちんとMySQL側に保存されているか確認してみましょう。

 

 

今回参考にしたリンク先の紹介

github.com

stackoverflow.com

stackoverflow.com

aspnet-core.clock-up.jp

Getting started with ASP.NET Core and MySQL Connector/NET | InsideMySQL.com