2012-01-19 1 views
0

データベースを操作するためのEntity Framework Code Firstアプローチを使用するASP.NET MVC3 Webサイトがあるとします。DBを作成してデプロイした後にエンティティフレームワーククラスを変更する

システムはテスト環境で動作しています。

DbContextの一部は、次のされている場合:私は、例えば、インシデントクラスにプロパティを追加する場合

public DbSet<Incident> Incidents { get; set; } 

それは、DB-コードコラボレーションの問題を引き起こすのでしょうか?

フレームワークはデータベーステーブルを自動的に更新するだけで、新しいプロパティなしで作成された古いレコードはnullのように扱われますか?

答えて

2

データベースの初期化設定に依存します。 (CreateDatabaseIfNotExists、DropCreateDatabaseWhenModelChanges、DropCreateDatabaseAlways)

例:Database.SetInitializer(新CreateDatabaseIfNotExists())を使用すると、任意のデータベースの初期化を設定しなかった場合、EFは「CreateDatabaseIfNotExists initlizerデフォルト を使用します

  • "それは InvalidOperationErrorをスローします。あなたは「DropCreateDatabaseWhenModelChanges」として設定されている場合

  • 、EFはあなたの新しいモデルに基づいて データベースを再作成します。ただし、データベースを作成するには、 アクセス権が必要です。 運用環境の場合は危険です。あなたは「DropCreateDatabaseAlways」として設定された場合は、アプリケーションを実行するたびに

  • 、EFは、データベースを再作成します。

+0

"DropCreateDatabaseWhenModelChanges"オプションをイニシャライザで使用すると、実際のデータが再集計されるか、またはprevの内容になります。テーブルは失われますか? –

+0

前のページの内容テーブルは失われます。 –

+0

ありがとうございます。この場合、何らかの更新アルゴリズムを実装する必要があります。 –

0

私が知る限り、自動的にデータベースは更新されません。コンテキストが変更されたというエラーメッセージが表示されます。あなたのために、あなたは "ドロップアンドクリエイト"をデータベースに行なわなければなりません!

関連する問題