redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

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