Entity Framework で既存DBを使用した時にログ出力されるエラーの解消方法
新年一つ目の記事ということで、あけましておめでとうございます。今年もよろしくお願いいたします。
Entity Framework を使用して開発を進めていく場合に、開発中は Code First を使用してDBを再作成するけれど、 本番環境やステージング環境には既にDBが用意されていることが多いと思います。
その場合、データベースイニシャライザーを変更して、DBを再作成しないようにします。
この状態で公開(発行)すると、テーブル名やカラム名と対応するModelクラスのプロパティ名が一致していれば動作しますが、
ログ出力を設定していると以下のエラーが記録されています。
エラー: オブジェクト名 'dbo.__MigrationHistory' が無効です。
このエラーの解消方法を調べました。
dboスキーマに __MigrationHistory テーブルが無いので作れば良いのかと思ったのですが、わざわざ作る必要はありませんでした。
以下のようにGlobal.asax
等で、データベースイニシャライザーに null を設定して、起動時に __MigrationHistory テーブルの存在をチェックに行かないようにすればOKでした。
Database.SetInitializer<DbContextを継承したクラス名>(null);
以上です。
環境
- Entity Framework 6.1.3