0

私は、コントローラーを作成したモデルを構築しました (そして、Web ブラウザーでコントローラーを介してビューを最初に参照するたびに作成されたテーブル内のレコードを表示、作成、削除、および編集するためのプロキシによる多数のビュー)。 Visual Studio のウィザード。

これは期待どおりに機能しましたが、モデルに変更を加え、次の手順を試して変更をデータベースにコミットしました。

  1. コントローラーを削除しました
  2. 作成/削除/etc レコード用のさまざまな cshtml ページを含む View フォルダーを削除しました
  3. Visual Studio のサーバー エクスプローラー ペインを使用して、データベースからテーブルを削除しました。
  4. モデルに基づいてコントローラーを再作成しました(およびプロキシによってさまざまなビュー)
  5. すべて保存しまし
  6. ソリューションを再構築しました

上記を実行した後、デバッグを押してコントローラーを参照し、エンティティ フレームワークがテーブルを再作成することを期待しました。代わりに、次のエラーが発生しました。

オブジェクト名 'dbo.FooBar' が無効です。// FooBar は私のモデルの名前であり、したがって私のテーブルです

いくつかの質問:

  1. コントローラー/ビュー/テーブルがすべて作成された後、モデルに加えられた変更をコミットする正しい方法は何ですか?それらに変更が加えられた可能性があります。
  2. 現在の状況を修正するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

使用する2つのパッケージは次のとおりです。

自動移行(EFMigrations)

http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-automatic-migrations-walkthrough.aspx

この機能は、最初にコードを使用するだけでなく、モデルに加えられた変更をデータベースに移行する機能を使用してプロジェクトを拡張します。ベータ版が終了した瞬間から、これを本番環境で使用しています。

MVCスキャフォールディング

http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/

既存のスキャフォールディングテンプレートをダウンロードして、モデルに基づいてビューを作成することができます。モデルが変更されると、これらのビューは自動的に更新されます。自分でテンプレートを作成することはありませんでしたが、その方法を示すScott Hanselmanのブログ投稿があります:http://www.hanselman.com/blog/ModifyingTheDefaultCodeGenerationscaffoldingTemplatesInASPNETMVC.aspx

Channel9でSteveSanderson(Scaffolding)とScott Hanselman(EF Migrations)の講演をチェックしてください。

于 2012-11-11T22:55:53.097 に答える