1

ASP.NET MVCを学習し、SOを含むインターネットを検索しようとしています。|DataDirectory|に関する多くの質問と回答 どこでどのように。

サイトブレークをデバッグする場合:

"The model backing the 'ASPNETDBContext' context has changed since the database was created..."

次に、パスを確認しました。|DataDirectory|ASPNETDBContext.sdf

 string path = AppDomain.CurrentDomain.GetData( "DataDirectory" ).ToString();

プロジェクトのApp_Dataを指しますが、ファイルはありません。

DBは完全に空なので、必要なのは削除するだけです。

私の実際の質問に答える必要があります:これを適切に修正する方法は?

フォローアップを行いました:さらに:そのファイルはどこにありますか?

4

1 に答える 1

1

問題の答えは、Scott Guthrie のブログを読むことにあります。

この例外が発生している場合:

「データベースが作成されてから、'Production' コンテキストをサポートするモデルが変更されました。データベースを手動で削除/更新するか、IDatabaseInitializer インスタンスで Database.SetInitializer を呼び出してください。」

何が起こっているのか、それについて何をすべきかは次のとおりです。

モデルが最初に作成されるとき、DatabaseInitializer を実行して、データベースがない場合はデータベースを作成したり、シード データを追加したりします。既定の DatabaseInitializer は、モデルを使用するために必要なデータベース スキーマを、データベースと共に作成された EdmMetadata テーブルに格納されているスキーマのハッシュと比較しようとします (Code First がデータベースを作成する場合)。既存のデータベースには EdmMetadata テーブルがないため、ハッシュもありません。現在の実装では、そのテーブルが欠落している場合はスローされます。これがデフォルトであるため、最終バージョンを出荷する前に、この動作を変更する作業を行います。それまでは、既存のデータベースは一般にデータベース初期化子を必要としないため、以下を呼び出してコンテキスト タイプに対してオフにすることができます。

Database.SetInitializer<Production>(null);

これが問題の解決に役立つことを願っています。

于 2012-08-29T04:41:12.197 に答える