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

作成者: Tom Dykstra

スタート プロジェクトのダウンロード

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

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

概要

このチュートリアルでは、データベースの更新を完全なSQL Server データベースにデプロイする方法について説明します。 Code First Migrationsはデータベースの更新のすべての作業を行うため、このプロセスは、データベース更新のデプロイに関するチュートリアルでSQL Server Compactした処理とほぼ同じです。

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

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

チュートリアルのこのセクションでは、データベースの変更と対応するコードの変更を行い、テスト環境と運用環境に配置する準備として Visual Studio でテストします。 この変更には、エンティティに列をOfficeHoursInstructor追加し、Instructors Web ページに新しい情報を表示する必要があります。

ContosoUniversity.DAL プロジェクトで、Instructor.csを開き、 プロパティと Courses プロパティの間に次のプロパティをHireDate追加します。

[MaxLength(50)]
public string OfficeHours { get; set; }

初期化子クラスを更新して、新しい列にテスト データをシードするようにします。 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"), OfficeHours = "8-9AM, 4-5PM", 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"), OfficeHours = "6AM-6PM", 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"), OfficeHours = "By appointment only" }
};

ContosoUniversity プロジェクトで、Instructors.aspxを開き、最初GridViewのコントロールの終了</Columns>タグの直前に、営業時間の新しいテンプレート フィールドを追加します。

<asp:TemplateField HeaderText="Office Hours">
    <ItemTemplate>
        <asp:Label ID="InstructorOfficeHoursLabel" runat="server" Text='<%# Eval("OfficeHours") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="InstructorOfficeHoursTextBox" runat="server" Text='<%# Bind("OfficeHours") %>'
            Width="14em"></asp:TextBox>
    </EditItemTemplate>
</asp:TemplateField>

ソリューションをビルドします。

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

次のコマンドを入力します。

add-migration AddOfficeHoursColumn

update-database

アプリケーションを実行し、[ Instructors ] ページを選択します。 Entity Framework によってデータベースが再作成され、テスト データでシードされるため、ページの読み込みに通常よりも少し時間がかかります。

Instructors_page_with_office_hours

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

Code First Migrationsを使用する場合、データベース変更を SQL Server にデプロイする方法は、SQL Server Compactの場合と同じです。 ただし、テスト発行プロファイルは引き続きSQL Server CompactからSQL Serverに移行するように設定されているため、変更する必要があります。

最初の手順では、前のチュートリアルで作成した接続文字列変換を削除します。 SQL Serverへの移行用に [SQL のパッケージ/発行] タブを構成する前と同様に、発行プロファイルで接続文字列変換を指定するため、これらは不要になります。

Web.Test.config ファイルを開き、 要素を削除しますconnectionStringsWeb.Test.config ファイル内の残りの変換は、 要素のEnvironment値に対するappSettings変換のみです。

これで、発行プロファイルを更新し、テスト環境に発行できます。

[Web の発行] ウィザードを開き、[プロファイル] タブに切り替えます。

[ テスト 発行プロファイル] を選択します。

[Settings](設定) タブを選択します。

[ 新しいデータベース発行の機能強化を有効にする] をクリックします。

SchoolContext の接続文字列 ボックスに、前のチュートリアルの Web.Test.config 変換ファイルで使用したのと同じ値を入力します。

Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True

[Code First Migrationsの実行 (アプリケーションの起動時に実行)] を選択します。 (Visual Studio のバージョンでは、[チェック] ボックスに [Code First Migrationsの適用] というラベルが付けられている場合があります)。

DefaultConnection の接続文字列 ボックスに、前のチュートリアルの Web.Test.config 変換ファイルで使用したのと同じ値を入力します。

Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True

[ データベースの更新] はオフのままにします。

[発行] をクリックします。

Visual Studio は、コードの変更をテスト環境にデプロイし、ブラウザーを Contoso University ホーム ページに開きます。

[Instructors] ページを選択します。

アプリケーションはこのページを実行すると、データベースへのアクセスを試みます。 Code First Migrationsデータベースが最新であるかどうかを確認し、最新の移行がまだ適用されていないことを検出します。 Code First Migrations最新の移行を適用し、 メソッドをSeed実行した後、ページが正常に実行されます。 シードされたデータを含む新しい [Office Hours] 列が表示されます。

Instructors_page_with_OfficeHours_Test

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

運用環境の発行プロファイルも変更する必要があります。 この場合は、更新された .publishsettings ファイルをインポートして、既存のプロファイルを削除し、新しいプロファイルを作成します。 更新されたファイルには、Cytanium のSQL Server データベースの接続文字列が含まれます。

テスト環境にデプロイしたときに見たように、Web.Production.config変換ファイルに接続文字列変換は不要になります。 そのファイルを開き、 要素を削除します connectionStrings 。 残りの変換は、 要素内appSettingsEnvironment値と、locationElmah エラー レポートへのアクセスを制限する 要素に対するものです。

運用環境用に新しい発行プロファイルを作成する前に、「 運用環境へのデプロイ 」チュートリアルで行ったのと同じ方法で、更新された .publishsettings ファイルをダウンロードします。 (Cytanium コントロール パネルで、[Web サイト] をクリックし、contosouniversity.com Web サイトをクリックします。[Web 発行] タブを選択し、この Web サイトの [発行プロファイルのダウンロード] をクリックします)。この操作を行う理由は、.publishsettings ファイル内のデータベース 接続文字列を取得するためです。 ファイルを初めてダウンロードした時点で接続文字列を使用できませんでした。これは、まだSQL Server Compactを使用していて、Cytanium でSQL Server データベースをまだ作成していないためです。

これで、発行プロファイルを更新し、運用環境に発行できます。

[Web の発行] ウィザードを開き、[プロファイル] タブに切り替えます。

[ プロファイルの管理] をクリックし、運用プロファイルを削除します。

[Web の発行] ウィザードを閉じて、この変更を保存します。

[Web の発行] ウィザードをもう一度開き、[インポート] をクリックします。

[ 接続 ] タブで、一時 URL を使用している場合は、[ 宛先 URL] を適切な値に変更します。

[次へ] をクリックします。

[ 設定 ] タブで、[ 新しいデータベース発行の機能強化を有効にする] をクリックします。

SchoolContext の接続文字列 ドロップダウン リストで、Cytanium 接続文字列を選択します。

Selecting_Cytanium_connection_string

[ コードの実行] [最初の移行 (アプリケーションの起動時に実行)] を選択します

DefaultConnection の接続文字列 ドロップダウン リストで、Cytanium 接続文字列を選択します。

[ プロファイル ] タブを選択し、[ プロファイルの管理] をクリックし、プロファイルの名前を "contosouniversity.com - Web 配置" から "運用" に変更します。

発行プロファイルを閉じて変更を保存し、もう一度開きます。

[発行] をクリックします。 (実際の運用 Web サイトの場合は、 app_offline.htm を運用環境にコピーし、発行する前にプロジェクト フォルダーに配置し、デプロイが完了したら削除します)。

Visual Studio は、コードの変更をテスト環境にデプロイし、ブラウザーを Contoso University ホーム ページに開きます。

[Instructors] ページを選択します。

Code First Migrationsは、テスト環境と同じ方法でデータベースを更新します。 シードされたデータを含む新しい [Office Hours] 列が表示されます。

Instructors_page_with_OfficeHours_Prod

これで、SQL Server データベースを使用して、データベースの変更を含むアプリケーション更新プログラムが正常にデプロイされました。

詳細情報

これにより、ASP.NET Web アプリケーションをサード パーティのホスティング プロバイダーにデプロイする方法に関するこの一連のチュートリアルが完了します。 これらのチュートリアルで説明されているトピックの詳細については、MSDN Web サイトの 「展開コンテンツ マップの ASP.NET 」を参照してください。

謝辞

私はこのチュートリアルシリーズの内容に大きなコントリビューションをした次の人々に感謝したいと思います: