FC2ブログ
EntityFrameworkCore 2の実装を別なプロジェクトで管理する場合のマイグレーション
適当に一つのソリューションに二つのプロジェクトを用意する。
一つは、Webアプリ、もう一つは、Webアプリが参照するDB関連の処理をまとめたクラスライブラリ。

このクラスライブラリにEntityFramworkのDbContextを作成する。
そして、Webアプリ側はそのクラスライブラリのプロジェクトを参照するようにする。
↑ここ重要

で、VSのパッケージマネージャコンソールから、
# Add-Migration -verbose InitDatabase
とマイグレーションファイルを作成するようコマンドを発行する。

でも、なぜか処理は正常に終わるのにマイグレーションファイルが作られない・・・
仕方がないのでAdd-Migration コマンドの引数を調べてみる。
-StartupProject というオプションがあったので使ってみる。

# Add-Migration -verbose -StartupProject Sample.Web InitDatabase

なんと動作が変わってほかのエラーが出てきた。Context が指定されていないとか
言ってきたので、Context のクラスを指定してみる。

# Add-Migration -verbose -Context SampleDbContext -StartupProject Sample.Web InitDatabase

ちゃんと動いた('A`)y~~~
クラスライブラリのプロジェクトにマイグレーションファイルが生成されている。

じゃ、次にDBに展開してみようと思って次のコマンドを実行してみる

# Update-Database

やっぱり正常に動作するが何も変化がない。Add-Migrationコマンドと同じように引数を追加して実行してみる。

# Update-Database -verbose -Context SampleDbContext -StartupProject Sample.Web

動いた!
EFツールの動作がもしかしたらStartup経由でしか動作しないのかもしれない。
そのための、-StartupProject オプションなんだろうな('A`)y~~~

スポンサーサイト
TOP
プロフィール

hssamurai

Author:hssamurai
FC2ブログへようこそ!

最新記事
最新コメント

最新トラックバック

月別アーカイブ
カテゴリ