次の方法で共有


チュートリアル : ASP.NET でのデータ アクセス層とビジネス ロジック層の作成

更新 : 2007 年 11 月

ASP.NET でデータを操作する場合は、共通のソフトウェア パターンを利用できます。これらのパターンの 1 つは、データへのアクセスを管理するビジネス ロジック コード、またはその他のビジネス ルールを提供するビジネス ロジック コードから、データ アクセス コードを分離することです。このパターンでは、これらの 2 つの層がプレゼンテーション層から分離されます。プレゼンテーション層は、データを表示または変更するために Web サイト ユーザーがアクセスするページで構成されます。

ASP.NET には、データ アクセス、ビジネス ロジック、およびプレゼンテーションを分離する複数の方法が用意されています。たとえば、データ ソース モデルには、LinqDataSource コントロールや ObjectDataSource コントロールなどのサーバー コントロールが含まれており、データ アクセス コードとビジネス ロジックからプレゼンテーション層を分離します。

もう 1 つのパターンは、データ アクセス ロジックを ASP.NET ページ (プレゼンテーション層) に直接含めることです。たとえば、ASP.NET ページの分離コード ページで ADO.NET コードを記述したり、SqlDataSource コントロールを使用したりできます。この方法により、データ アクセス ロジックがプレゼンテーション層と密に結合されます。

推奨される方法は、プレゼンテーション層からデータ アクセス ロジックを分離する方法です。この分離した層は、データ アクセス層と呼ばれます。データ アクセス層は、個別のクラス ライブラリ プロジェクトとして実装できます。ただし、データ アクセス層を生成できる Visual Web Developer でツールを使用することもできます。

Bb470374.alert_note(ja-jp,VS.90).gifメモ :

Microsoft Visual Web Developer Express Edition でクラス ライブラリ プロジェクトを作成することはできません。ただし、Visual Basic Express Edition または Visual C# Express Edition を使用して個別のプロジェクトを作成し、そのクラスからの出力を Web サイト内のアセンブリ (DLL) として含めることができます。

Web サイトがデータを表示または更新する場合、ユーザー インターフェイスを作成する前に、データ アクセス層とビジネス ロジック層を作成する必要があります。

通常、データ ドリブン Web アプリケーションには、データを表す型指定されたデータセットまたはエンティティ クラスを使用してデータ アクセス層を含めます。カスタム ビジネス ルールを適用するビジネス ロジック層も含めます。最後に、ASP.NET ページを使用してプレゼンテーション層を含め、マスタ ページとテーマを使用して共通のページ レイアウトを作成します。このチュートリアルでは、データ アクセス層を作成する方法について説明します。

データ アクセス層には、基になるデータ ソースに固有のコードがすべて含まれています。これには、データベースへの接続を作成し、選択、挿入、更新、および削除の各コマンドを発行するコードが含まれます。通常、データ アクセス層には、基になるデータベース データにアクセスするためのメソッドを実装するクラスが含まれています。プレゼンテーション層では、データを直接操作することはありません。代わりに、すべてのデータ要求について、データ アクセス層でクラスとメソッドを呼び出します。

このチュートリアルでは、以下のタスクを行います。

  • SQL データベースを作成し、データを追加する。

  • データ アクセス層として機能する Linq to SQL ファイルを追加する。

  • プレゼンテーション層として機能するページを作成する。

  • プレゼンテーション層とデータ アクセス層の間で通信するページに LinqDataSource コントロールを追加する。

前提条件

このチュートリアルを実行するには、以下が必要です。

  • Microsoft Visual Studio 2008 または Microsoft Visual Web Developer Express Edition。ダウンロード情報については、.NET Framework Developer Center の Web サイトを参照してください。

  • .NET Framework version 3.5。

  • SQL Server Express Edition。Microsoft SQL Server がインストールされている場合は、代わりに使用できます。

Web サイトの作成

最初に Web サイトを作成します。

新しいファイル システム Web サイトを作成するには

  1. Visual Studio 2008 または Visual Web Developer Express Edition を開きます。

  2. [ファイル] メニューの [新しい Web サイト] をクリックします。

    [新しい Web サイト] ダイアログ ボックスが表示されます。

  3. [Visual Studio にインストールされたテンプレート] の [ASP.NET Web サイト] をクリックします。

  4. [場所] ボックスで、[ファイル システム] をクリックし、Web サイト ファイルを格納するフォルダの名前を入力します。

    たとえば、「C:\BasicWebSite」と入力します。

  5. [言語] ボックスの一覧で、[Visual Basic] または [Visual C#] をクリックし、[OK] をクリックします。

    Bb470374.alert_note(ja-jp,VS.90).gifメモ :

    選択したプログラミングは、この Web サイトの既定値になります。ただし、ページごとに個別にプログラミング言語を設定することもできます。

    Visual Web Developer によりフォルダが作成され、Default.aspx という名前の新しいページが作成されます。

データベースへの接続

次に、[サーバー エクスプローラ] ウィンドウを使用して、Visual Web Developer 内のデータベースに接続します (Visual Web Developer Express Edition では、このウィンドウは [データベース エクスプローラ] という名前になります)。サーバー エクスプローラでデータベースへの接続を作成すると、テーブル、ストアド プロシージャ、ビュー、およびその他のデータベース要素の追加をすべて Visual Studio 内で実行できます。手動で、または [クエリ ビルダ] ウィンドウを使用して、テーブル データを表示したり、クエリを作成したりできます。

このチュートリアルの後半で、データ アクセス層の型指定されたデータセットを作成するときに、Visual Web Developer でデータベースへの接続を作成する必要があります。接続情報は手動で指定できます。ただし、Visual Web Developer では、サーバー エクスプローラに既に登録されているデータベースの一覧が自動的に作成されるため、このプロセスを簡略化できます。

このチュートリアルでは、タスク項目を追跡するための新しいデータベースを作成します。

SQL Server Express データベースの新規作成

ここでは、TO DO リストのタスク情報を格納する SQL Server Express データベースを新規に作成します。

Web サイトにデータベースを追加するには

  1. ソリューション エクスプローラで、Web サイトの名前を右クリックし、[新しい項目の追加] をクリックします。

    [新しい項目の追加] ウィンドウが表示されます。

  2. [SQL データベース] を選択し、データベースに Tasks.mdf という名前を付けます。

  3. [OK] をクリックします。

  4. Visual Web Developer で、データベースを App_Data フォルダに格納するかどうかを確認するメッセージが表示されたら、[はい] をクリックします。

Tasks データベースのスキーマとサンプル データの作成

データベースのデザイン機能と編集機能を使用すると、タスク項目を格納するテーブルのスキーマを作成できます。

スキーマを定義し、Tasks データベースのデータを追加するには

  1. ソリューション エクスプローラで、[App_Data] フォルダを開き、Tasks.mdf をダブルクリックします。

    Tasks データベース ノードがサーバー エクスプローラで開きます。

  2. [テーブル] フォルダを右クリックし、[新しいテーブルの追加] をクリックします。

    テーブル定義ウィンドウが表示されます。

  3. テーブルに次の列を作成します。

    列名

    データ型

    プロパティ

    taskId

    int

    null 以外

    name

    nvarchar(50)

    null 以外

    dateCreated

    datetime

    null 以外

    isComplete

    bit

    null 以外

  4. taskId 列の行を選択し、行を右クリックして [主キーの設定] をクリックします。

  5. taskid 行を選択し、[列のプロパティ] ウィンドウで [IDENTITY の指定] セクションを探します。

  6. セクションを開き、[(Is Identity)] を [はい] に設定します。

  7. テーブルを保存し、TasksList という名前を付け、テーブル定義ウィンドウを閉じます。

  8. サーバー エクスプローラでテーブルを右クリックし、[テーブル データの表示] をクリックします。

    データを表示、追加、および編集できる編集ウィンドウが表示されます。

  9. 4 つまたは 5 つのレコードをテーブルに追加します。

    taskId 列は ID 列であり、値は自動的に割り当てられるため、値を指定する必要はありません。

  10. 編集ウィンドウを閉じます。

データ アクセス層とビジネス ロジック層の作成

複数の方法で作成したデータベースのデータ アクセス層とビジネス ロジック層を作成できます。このチュートリアルでは、データベース エンティティを表すクラスを作成します。その後、独自のビジネス ロジックをこれらの生成されたクラスに追加できます (このチュートリアルでは、クラスへのビジネス ロジックの追加は行いません)。

このチュートリアルでは、統合言語クエリ (LINQ: Language Integrated Query) を使用してデータを操作します。LINQ は、オブジェクト指向プログラミングの原則をリレーショナル データに適用します。LINQ は、さまざまな種類のデータ ソースからのデータを照会および更新するための統一プログラミング モデルを提供し、C# 言語および Visual Basic 言語にデータ機能を直接拡張します。LINQ の詳細については、「統合言語クエリ (LINQ: Language-Integrated Query)」を参照してください。

データ アクセス層として LINQ to SQL クラスを使用します。データを表すエンティティ クラスを生成するために、Visual Web Developer で [オブジェクト リレーショナル デザイナ] ウィンドウを使用します。

SQL データ コンテキスト クラスへの Tasks データベースのマップ

データ アクセス層の作成を開始するには、型指定されたデータセットをプロジェクトに追加します。

Tasks テーブルのクラスを作成するには

  1. Web サイトに App_Code フォルダがない場合は、ソリューション エクスプローラでプロジェクトを右クリックし、[ASP.NET フォルダの追加] をクリックして、[App_Code] をクリックします。

  2. App_Code フォルダを右クリックし、[新しい項目の追加] をクリックします。

    [新しい項目の追加] ダイアログ ボックスが表示されます。

  3. [Visual Studio にインストールされたテンプレート] で、[LINQ to SQL クラス] テンプレートを選択し、ファイル Tasks.dbml の名前を変更します。

  4. [追加] をクリックします。

    [オブジェクト リレーショナル デザイナ] ウィンドウが表示されます。

  5. サーバー エクスプローラで、TasksList テーブルを [オブジェクト リレーショナル デザイナ] ウィンドウへドラッグします。

  6. Tasks.dbml ファイルを保存します。

    Visual Web Developer は、Tasks.dbml の下の [App_Code] フォルダに Tasks.dbml.layout ファイルを作成します。また、使用しているプログラミング言語に応じて、Tasks.designer.cs ファイルまたは Tasks.designer.vb ファイルも作成します。

  7. ソリューション エクスプローラで、Tasks.designer.cs ファイルまたは Tasks.designer.vb ファイルを開きます。

    コードに TasksDataContext と TasksList という名前のクラスが含まれていることを確認します。TasksDataContext クラスはデータベースを表し、TasksList クラスはデータベース テーブルを表します。TasksDataContext クラスのパラメータなしのコンストラクタは、Web サイトの構成ファイル (Web.config) ファイルからデータベースの接続文字列を読み取ります。

  8. Web.config ファイルを開きます。

    connectionStrings 要素に Tasks データベースへの接続文字列が追加されていることを確認します。

  9. クラス ファイルと Web.config ファイルを閉じます。

LinqDataSource コントロールの作成および構成

データベース テーブル、およびデータベース エンティティを表すクラスを作成したので、ASP.NET Web ページで LinqDataSource を使用してデータベースにアクセスします。LinqDataSource コントロールは、ASP.NET データ ソース コントロールのアーキテクチャを使用して、Web 開発者が LINQ を使用できるようにします。

LinqDataSource コントロールは、データベース内のオブジェクトを選択、挿入、更新、および削除するためのコードを作成します。これらのクラスをビジネス ロジックから呼び出すと、データベース機能を実行し、ビジネス ロジック ルールを適用できます。

LinqDataSource コントロールを作成して構成するには

  1. Default.aspx ページを開くか、そのページに切り替えます。

  2. デザイン ビューに切り替えます。

  3. ツールボックスの [データ] タブから、LinqDataSource コントロールを Web ページにドラッグします。

    ID プロパティは "LinqDataSource1" のままにします。

  4. [LinqDataSource タスク] スマート タグ パネルの [データ ソースの構成] をクリックします。

  5. コンテキスト オブジェクトの一覧で、[TasksDataContext] を選択し、click [次へ] をクリックします。

  6. 一覧で、[TasksLists(Table<TasksList>)] を選択し、[完了] をクリックします。

  7. [LinqDataSource タスク] スマート タグ パネルで、[削除を有効にする]、[挿入を有効にする]、および [更新を有効にする] の各チェック ボックスをオンにします。

    データを選択するためにデータベース コマンドを指定する必要はありません。

  8. ページを実行します。

    このチュートリアルで以前に入力したデータがページに表示されます。

次の手順

このチュートリアルでは、[LINQ to SQL クラス] テンプレートと LinqDataSource サーバー コントロールを使用して、アプリケーションのデータ アクセス層とビジネス ロジック層を作成する方法について説明しました。Web サイト ページで、Web サイトのプレゼンテーション層には直接結び付いていない、柔軟性のあるデータにアクセスする方法を作成しました。

チュートリアル : AJAX 対応データ アプリケーションの作成」のトピックでは、LinqDataSource コントロールを使用して、Tasks データベース内の情報を表示および更新する AJAX 対応 Web アプリケーションを作成します。

参照

処理手順

チュートリアル : AJAX 対応データ アプリケーションの作成

概念

ASP.NET の主要チュートリアル