1

のスポーツ ストアのチュートリアルに従ってPro Asp.Net MVC book, 、Asp.Net MVC4 ソリューションに 2 つのプロジェクトがあります。One SportsStore.WebUIand one SportsStore.Domain、下に私の Product クラスがあります

Nameモデル クラスにRequired 属性を追加しました

    //Product.cs class
    [Required]
    public string Name { get; set; }
    //..more properties, not important as I get the same error for all -
   because I added Required to all

プロジェクトを実行すると、The model backing the 'EFDbContext' context has changed since the database was created.エラーが発生します。

私はstackoverflowとMSDNをチェックしました

解決策 1: 機能しなかった

MSDN で提案された解決策は、実行することでしたUpdate-Database -Force。それはうまくいきません、私は得ます

「アセンブリ 'SportsStore.WebUI' を読み込めませんでした。(Visual Studio 内で Code First Migrations を使用している場合、これは、ソリューションのスタートアップ プロジェクトが移行を含むプロジェクトを参照していない場合に発生する可能性があります。ソリューションを使用するか、-StartUpProjectName パラメーターを使用してください。)"

A-私は最初にコードを使用しておらず、B-ドメインプロジェクトはWebUIプロジェクトを参照しているため、それは奇妙です

解決策 2: 機能しなかった

Enable-Migrations次に、PM コンソールで試したところ、

No context type was found in the assembly 'SportsStore.WebUI'.

次に、スタートアップ プロジェクトを SportsStore.Domain (製品クラスを持つ) に変更しようとしましたが、何もありません。同じエラーが発生しました。

4

2 に答える 2

1

私もこのエラーがありました。正常に動作していた EF 5.0 を使用した既存の asp.net mvc がありました。

次に、同じデータベースを指す EF 5.0 を使用してコンソール アプリを作成しました。asp.net mvc アプリがモデル バッキング例外をスローし始めました。

「_ MigrationHistory」という名前の新しいテーブルがあることに気付きました。asp.net アプリを再び機能させるために、このテーブルの名前を「 _MigrationHistory_backup」に変更しました。

于 2013-10-16T04:09:08.080 に答える
1

この問題は、スキャフォールディングの呼び出しのターゲットを変更しなかったために実際に発生しています。パッケージ マネージャー コンソールで、ドメイン オブジェクトを対象とするコマンドを実行する場合、[既定のプロジェクト] ドロップダウンをドメイン プロジェクトに設定する必要があります。Web プロジェクトに対して移行またはデータベースの更新を実行しようとすると、失敗します。

編集

エラーのこの行は重要です

Visual Studio 内で Code First Migrations を使用している場合、これは、ソリューションのスタートアップ プロジェクトが移行を含むプロジェクトを参照していない場合に発生する可能性があります。

エラーは"Could not load assembly 'SportsStore.WebUI'、ドメイン プロジェクトに移行する必要があるにもかかわらず、移行が行われたプロジェクトであることを示しています。

于 2013-08-21T18:55:43.697 に答える