1

2 つの Azure Web サイトをセットアップしました。1 つはデータベースなしでクライアント アプリケーションを提供し、もう 1 つはクライアントがデータを取得するデータベースと WebApi ソリューションを提供します。

データベースに新しいテーブルを追加し、一度だけ実行する予定の一時的な Seed メソッドを使用してデータを入力しようとしています。私はそれを行うための最良の方法が何であるかはわかりません。

現在、データベース初期化子を に設定してMigrateDatabaseToLatestVersionおり、この更新をローカルで数回テストしました。すべて順調に進んでいるように見えますが、更新/シード メソッドの実行には約 6 分かかります。移行中の並行性についていくつか質問があります。

この 6 分間でビジネス ロジックとテーブルが更新されている間に、だれかがデータベースに対して CRUD 操作を実行するとどうなりますか? つまり、VSから「公開」を押してから、新しいビットが実際に展開されるまでの時間です。シード メソッドが別のテーブルのすべてのエントリを変更し、ユーザーがシードの途中でこの重要な更新によってヒットしないデータを追加した場合はどうなるでしょうか? 念のため(理想とはほど遠い...)、サイトをロックする必要がありますか?

このプロセスに関する一般的なガイダンスは素晴らしいでしょう。

4

2 に答える 2

1

Fernando のメンテナンス ウィンドウのアイデアに同意します。しかし、これがあなたの質問に対して私がとるアプローチです。

  1. 何かを行う前に、データベースがバックアップされていることを確認してください(SQL Azureを想定しています)
  2. クライアント アプリケーションにメンテナンス ページを表示する
  3. Visual Studio を介してデータベースへの移行を実行する (コンソールからこれを行っていると想定しています) または単体テストを実行します。
  4. Web サイト/Web API Web サイトを公開する
  5. 変更を確認します。

Entity Framework を介してシード メソッドを使用する主な点は、簡単に間違えてしまい、Prod に対して実行しているときに適切なバックアップがないと、すぐにトラブルに巻き込まれる可能性があることです。おそらく、最初にテスト データベース/環境 (ある場合) を実行して、必要なことが起こっていることを確認します。

于 2013-07-29T19:40:31.620 に答える