次の方法で共有


Visual Studio または Visual Web Developer を使用したSQL Server Compactを使用した ASP.NET Web アプリケーションのデプロイ: データベース更新プログラムのデプロイ - 9/12

作成者: Tom Dykstra

スタート プロジェクトをダウンロードする

この一連のチュートリアルでは、Visual Studio 2012 RC または Visual Studio Express 2012 RC for Web を使用して、SQL Server Compact データベースを含む ASP.NET Web アプリケーション プロジェクトをデプロイ (発行) する方法について説明します。 Web 発行更新プログラムをインストールする場合は、Visual Studio 2010 を使用することもできます。 シリーズの概要については、シリーズ の最初のチュートリアルを参照してください。

Visual Studio 2012 の RC リリース後に導入された展開機能を示すチュートリアルでは、SQL Server Compact以外のSQL Serverエディションを展開する方法と、Azure App Service Web Appsに展開する方法については、「Visual Studio を使用した Web 配置の ASP.NET」を参照してください。

概要

このチュートリアルでは、データベースの変更と関連するコードの変更を行い、Visual Studio で変更をテストしてから、テスト環境と運用環境の両方に更新プログラムをデプロイします。

アラーム: チュートリアルを実行するときにエラー メッセージが表示されたり、何かが機能しない場合は、トラブルシューティング ページを必ずチェックしてください。

テーブルへの新しい列の追加

このセクションでは、 エンティティと Instructor エンティティの基本クラスにPerson生年月日列をStudent追加します。 次に、インストラクター データを表示するページを更新して、新しい列を表示します。

ContosoUniversity.DAL プロジェクトで Person.cs を開き、クラスの末尾に次のプロパティをPerson追加します (その後に 2 つの右中かっこが必要です)。

[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
[Display(Name = "Birth Date")]
public DateTime? BirthDate { get; set; }

次に、新しい列の値を提供するように Seed メソッドを更新します。 Migrations\Configuration.cs を開き、生年月日情報を含む次のコード ブロックで始まるvar instructors = new List<Instructor>コード ブロックを置き換えます。

var instructors = new List<Instructor>
{
    new Instructor { FirstMidName = "Kim",     LastName = "Abercrombie", HireDate = DateTime.Parse("1995-03-11"), BirthDate = DateTime.Parse("1918-08-12"), OfficeAssignment = new OfficeAssignment { Location = "Smith 17" } },
    new Instructor { FirstMidName = "Fadi",    LastName = "Fakhouri",    HireDate = DateTime.Parse("2002-07-06"), BirthDate = DateTime.Parse("1960-03-15"), OfficeAssignment = new OfficeAssignment { Location = "Gowan 27" } },
    new Instructor { FirstMidName = "Roger",   LastName = "Harui",       HireDate = DateTime.Parse("1998-07-01"), BirthDate = DateTime.Parse("1970-01-11"), OfficeAssignment = new OfficeAssignment { Location = "Thompson 304" } },
    new Instructor { FirstMidName = "Candace", LastName = "Kapoor",      HireDate = DateTime.Parse("2001-01-15"), BirthDate = DateTime.Parse("1975-04-11") },
    new Instructor { FirstMidName = "Roger",   LastName = "Zheng",       HireDate = DateTime.Parse("2004-02-12"), BirthDate = DateTime.Parse("1957-10-12") }
};

ContosoUniversity プロジェクトで Instructors.aspx を開き、新しいテンプレート フィールドを追加して生年月日を表示します。 採用日とオフィスの割り当ての間に追加します。

<asp:TemplateField HeaderText="Birth Date" SortExpression="BirthDate">
    <ItemTemplate>
        <asp:Label ID="InstructorBirthDateLabel" runat="server" Text='<%# Eval("BirthDate", "{0:d}") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="InstructorBirthDateTextBox" runat="server" Text='<%# Bind("BirthDate", "{0:d}") %>'
            Width="7em"></asp:TextBox>
    </EditItemTemplate>
</asp:TemplateField>

(コードのインデントが同期されなくなっている場合は、Ctrl キーを押しながら K キーを押し、Ctrl キーを押しながら D キーを押すと、ファイルの書式が自動的に変更されます)。

ソリューションをビルドし、[ パッケージ マネージャー コンソール ] ウィンドウを開きます。 ContosoUniversity.DAL が 既定のプロジェクトとして選択されていることを確認します。

[パッケージ マネージャー コンソール] ウィンドウで、[既定のプロジェクト] として [ContosoUniversity.DAL] を選択し、次のコマンドを入力します。

add-migration AddBirthDate

このコマンドが完了すると、Visual Studio によって新しい DbMigration クラスを定義するクラス ファイルが開き、 メソッドで Up 新しい列を作成するコードを確認できます。

AddBirthDate_migration_code

ソリューションをビルドし、[ パッケージ マネージャー コンソール ] ウィンドウに次のコマンドを入力します (ContosoUniversity.DAL プロジェクトがまだ選択されていることを確認してください)。

update-database

コマンドが完了したら、アプリケーションを実行し、[Instructors] ページを選択します。 ページが読み込まれると、新しい生年月日フィールドが表示されます。

Instructors_page_with_birth_date

データベース更新プログラムをテスト環境にデプロイする

[ソリューション エクスプローラー ContosoUniversity プロジェクトを選択します。

[ Web One Click Publish]\(Web One Click 発行 \) ツール バーで、[ Test publish profile]\(テスト発行プロファイル\) を選択し、[ Publish Web]\(Web の発行\) をクリックします。 (ツール バーが無効になっている場合は、ソリューション エクスプローラーで ContosoUniversity プロジェクトを選択します)。

Visual Studio によって更新されたアプリケーションがデプロイされ、ブラウザーがホーム ページに開きます。 [Instructors] ページを実行して、更新プログラムが正常にデプロイされたことを確認します。 アプリケーションがこのページのデータベースにアクセスしようとすると、Code First によってデータベース スキーマが更新され、 メソッドが Seed 実行されます。 ページが表示されると、予期される誕生日列と 日付 が表示されます。

Instructors_page_with_birth_date_Test

データベース更新プログラムを運用環境にデプロイする

運用環境にデプロイできるようになりました。 唯一の違いは、 app_offline.htm を使用して、ユーザーがサイトにアクセスし、変更の展開中にデータベースを更新できないようにすることです。 運用環境のデプロイの場合は、次の手順を実行します。

  • app_offline.htm ファイルを実稼働サイトにアップロードします。
  • Visual Studio で、[ Web One Click Publish]\(Web One Click 発行 \) ツール バーの [Production profile]\(運用プロファイル\) を選択し、[ Publish Web]\(Web の発行\) をクリックします。
  • 運用サイトから app_offline.htm ファイルを削除します。

Note

アプリケーションが運用環境で使用されている間は、バックアップ 計画を実装する必要があります。 つまり、 School-Prod.sdf ファイルと aspnet-Prod.sdf ファイルを運用サイトからセキュリティで保護されたストレージの場所に定期的にコピーする必要があり、このようなバックアップの世代をいくつか保持する必要があります。 データベースを更新するときは、変更の直前からバックアップ コピーを作成する必要があります。 その後、間違いを犯し、運用環境にデプロイするまで検出しなかった場合でも、破損する前の状態にデータベースを復旧できます。

Visual Studio がブラウザーでホーム ページの URL を開くと、 app_offline.htm ページが表示されます。 app_offline.htm ファイルを削除した後、ホーム ページをもう一度参照して、更新プログラムが正常に展開されたことを確認できます。

Instructors_page_with_birth_date_Prod

これで、テストと運用の両方にデータベースの変更を含むアプリケーション更新プログラムがデプロイされました。 次のチュートリアルでは、データベースをSQL Server CompactからSQL Server ExpressおよびSQL Serverに移行する方法について説明します。