0

EntityFramework 6.0.2 を明示的な (自動ではない) コード ファーストの移行で使用しています。私のモデルは十分に確立されています。このアプリを何ヶ月も使用しており、多くの移行が追加されています。アプリは MVC5 を使用します。

MVC5.1 にアップグレードした後、VS 内の EF 移行ツールがモデルをランタイムとは異なる方法で見る状況になりました。実行Add-Migrationすると、空の移行が作成され、Update-Migrationすべての未解決の移行が適用されたと見なされます。ただし、サイトを起動しようとすると、次のエラーで失敗しAutomaticMigrationsDisabledExceptionます。

保留中の変更があり、自動移行が無効になっているため、現在のモデルに一致するようにデータベースを更新できません。保留中のモデルの変更をコードベースの移行に書き込むか、自動移行を有効にします。自動移行を有効にするには、DbMigrationsConfiguration.AutomaticMigrationsEnabled を true に設定します。

[Required]これは、と[AllowHtml]セットの両方を持つモデル クラスの要素に関連しているようです。これらは新しいプロパティではありませんが、MVC5.1 への更新後に作成した最初の明示的な移行により、これらの両方の属性を持つプロパティが NOT NULL なしで再作成されました。これは、アプリを実行できなくなった時点であるため、問題に気づき始めたときです。

[AllowHtml]属性を削除したくありません。Visual Studio ツールがモデルをランタイムとは異なる方法で認識している理由を知りたいです。MVC5.0 を使用して簡単なテスト プロジェクトを作成し、それを 5.1 にアップグレードしましたが、同じ動作を示さなかったので、これに影響を与える可能性のあるメイン プロジェクトで何を探すべきかについての指針を探しています。

同様の問題に関する別の質問がありますが、MVC5.1 とは関係ありません。これは、おそらくどこかでバージョンの違いに関係していることを示唆しています。アプリケーション内の多くのアセンブリはすべて、MVC や EF などのすべての外部依存関係の同じバージョンを参照しています。

コードを MVC5.0 に戻したところ、問題は解決しましたが、問題はまだ理解も修正もされていません (いつか 5.1 に更新する必要があります!)。

4

2 に答える 2

1

この問題は、私のプロジェクト構造が原因であることが判明しました。複数のアセンブリがありますが、これを単純化すると、次のようになります。

  • エンティティ
  • データ (DbContext & 構成)
  • ウェブアプリ

これらは同じソリューションではなく、中央のビルド出力フォルダーから参照されます。問題は、Entities プロジェクトには (を使用するために[AllowHtml]) MVC への参照がありましたが、データ プロジェクトにはありませんでした。移行を作成するために Visual Studio ツールをデータ プロジェクトで実行すると、MVC が表示されませんでした。ただし、移行は MVC を使用する Web プロジェクトから実行されるため、動作が異なります。

于 2014-03-19T10:25:38.227 に答える