この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 37510|答える: 1

[出典] EF 6 Code-First におけるデータベース初期化戦略

[リンクをコピー]
掲載地 2019/04/17 15:56:46 | | |
Code-Firstアプリケーションを初めて実行した後にすでにデータベースを作成しましたが、2回目を始めた後は何でしょうか? アプリケーションを実行するたびに新しいデータベースが作成されますか? 本番環境はどうですか? ドメインモデルを変更するときに、データベースはどうやって変更すればいいですか? これらのシナリオを処理するには、データベースの初期化ポリシーのいずれかを使用する必要があります。

データベース初期化戦略は4つあります。

  • CreateDatabaseIfNotExists:これはデフォルト初期化手順。 名前の通り、設定上存在しないデータベースを作成します。 しかし、モデルクラスを変更してからこのイニショライザーでアプリケーションを実行すると例外が発生します。
  • DropCreateDatabaseIfModelChanges: モデルクラス(エンティティクラス)が変更された場合、このイニショライザは既存のデータベースを削除し、新しいデータベースを作成します。 モデルクラスが変わってもデータベーススキーマのメンテナンスを心配する必要はありません。
  • DropCreateDatabaseAlways:名前の通り、この初期化器はモデルクラスが変更されたかどうかに関わらず、アプリケーションを実行するたびに既存のデータベースを削除します。 これは、例えばアプリケーション開発の際に、アプリケーションを実行するたびに新しいデータベースが必要な場合に有用です。
  • カスタムデータベース初期化器上記の条件に合わない場合は、独自のカスタム初期化器を作成したり、他のデータベースの初期化処理を上記で行いたい場合は、独自の初期化器を作成することもできます。

上記のDB初期化戦略のいずれかを使用するには、データベースコンテキストクラスのクラスを使ってDBイイジョライザを設定する必要があります。以下のように示されています。




また、以下のように、イイショナイザのいずれかを継承することでカスタムデータベース初期化器を作成することもできます。




上記の例では、SchoolDBInitializerはCreateDatabaseIfNotExistsから派生したカスタム初期化器クラスです。 これにより、データベースの初期化コードとコンテキストクラスが分離されます。

設定ファイル内でDB初期化器を設定します

設定ファイル内でDBの初期化器を設定することもできます。 例えば、app.configでデフォルトの初期値を設定するには:




カスタムデータベースの初期化器は以下のように設定できます:




DB初期化器を閉じる

アプリケーションのデータベース初期化器をオフにできます。本番環境で既存データを失いたくなければ、イニショナイザーを閉じることができます、は以下の通りです:



設定ファイル内で初期化器をオフにすることもできます。例えば:








先の:イラストレイテッド・クリプトグラフィー第3版
次に:シリコンバレー 2018年4月の就職クラス動画
 地主| 掲載地 2021/02/07 15:08:59 |
Entity Frameworkがもはや無効なテーブルから開始__MigrationHistory許可する
https://www.itsvse.com/thread-3255-1-1.html

免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com