しばやん御大の Entity Framework Core についての以下の記事を読んで、
コンソールアプリでも、 ソースコードに 接続文字列 や ログの設定を書かずに、設定ファイルから Dependency Injection (依存性の注入: 以下DI) するにはどうしたらよいのかな? と思ったので、 ASP.NET Core の流儀を参考にしながら やってみようと思う。
データベースは、扱いが簡単な SQLite にする。
記事の最後に、 Visual Studio 2015 ですぐに使えるサンプルプロジェクトを用意しているので、 手っ取り早く結果を見たければ、 そのサンプルプロジェクトを見てみてほしい。
実現すること
まずは、何を実現させるのかをハッキリさせておこう。
- 接続文字列と ログ表示の設定を、外のファイルから指定すること
- マイグレーションなどを行うため、 EF Tools からも、上記設定が利用されるようにすること
ここで言う EF Tools とは、Entity Framework Core の コマンドラインツール のことだ。
このツールを使うと、 パッケージマネージャーコンソールから Add-Migration
とか Update-Database
と実行したり、 dotnet.exe から dotnet ef
コマンドを 実行することで、 コード生成やマイグレーションなど を利用することができる。
EF Tools でデータベースを取り扱う際、その接続文字列は DbContext に設定されたものが使用される。
コード内に接続文字列を書いてしまうと、マイグレーションするためのデータベースファイルが決め打ちになってしまい、変更ができなくなる。
このため、 EF Tools を実行した際も、依存性の注入が行えるようにしたい。