ASP.NET Dynamic Data モデルの概要

更新 : 2008 年 7 月

データ モデルは、データベースに含まれている情報と、データベース内の項目がどのように関連付けられているかを表します。ASP.NET Dynamic Data では、データを CLR 型として表すデータ モデルを使用しています。LINQ-to-SQL データ モデルと ADO.NET Entity Framework データ モデルがサポートされます。

データ モデルを通すことで、コードをほとんどまたは一切使用しなくても、データ フィールドの外観と動作を制御したり、自動的な検証を実行したりできます。さらに、データ モデルをカスタマイズして、データ フィールドの検証方法や、データ フィールドの表示用と編集用の UI のレンダリング方法を変更できます。

データ モデルを理解して操作すると、次の操作を行うことができます。

  • データ関連ロジックをプレゼンテーション層に埋め込む代わりにデータ層に作成することで、コードの再利用性を高める。

  • データ層でのデータ フィールドの検証をカスタマイズする。

  • メタデータを適用してデータ フィールドの外観と動作をカスタマイズする。

このトピックは、次のセクションで構成されています。

  • 背景

  • データ フィールドの表示と変更

  • データ フィールドの検証

  • 追加情報

背景

Dynamic Data では、.NET Framework に含まれている LINQ to SQL データ モデルと Entity Framework データ モデルをサポートしています。これらのモデルには、データベースに対するクエリや、作成、読み取り、更新、および削除 (CRUD: create, read, update and delete) 操作を実行するために Dynamic Data が使用する CLR 型が含まれています。これらのモデルは、データ検証ルールとビジネス ロジック ルールをデータ モデルに簡単に統合するための方法を提供します。

Visual Studio 2008 で新しいプロジェクトを作成するときは、LINQ to SQL クラス テンプレートまたは ADO.NET Entity Data Model テンプレートを選択できます。この選択により、プロジェクトで使用するモデルの型 (つまり、LINQ-to-SQL モデルか Entity Framework モデルか) が決まります。Dynamic Data スキャフォールディングでは、同一プロジェクト内で 1 つのデータ モデル型しかサポートできません。

実行時、Dynamic Data は、データ モデルに関する情報 (たとえばデータ フィールドのプロパティ) を自動的に抽出します。この情報に基づいて、データの表示と編集に使用する UI の作成方法が推論されます。UI のレンダリングには、フィールド テンプレートが使用されます。たとえば、Dynamic Data は、次の情報を使用して UI をレンダリングします。

  • テーブル間の関連付けに関する情報。外部キー列を表示し、テーブル間のナビゲーションを作成するために使用されます。

  • データ フィールドの検証を追加するためのデータ型情報。たとえば、null の列情報を使用してデータ フィールドが必須かどうかを判断したり、長さ情報を使用してユーザーによるテキスト入力の最大長を制限したりできます。

詳細については、「方法 : データ モデルのデータ フィールドの外観と動作をカスタマイズする」を参照してください。

データ フィールドの表示と変更

Dynamic Data は、データ モデル メタデータを使用して、データ フィールドの表示および変更用の UI をレンダリングするために使用するフィールド テンプレートを自動的に決定します。フィールド テンプレートは、組み込みデータ型に基づいてデータ フィールドを表示および変更するために Dynamic Data で提供されるユーザー コントロールです。データ型をレンダリングするために、Dynamic Data は、UIHintAttribute 属性が適用されているクラスをデータ モデル内で検索します。

属性が存在する場合、Dynamic Data は、特定のデータ フィールド型を表示および変更するために使用するフィールド テンプレートを指定します。属性が存在しない場合、Dynamic Data は、データ フィールド型に一致する名前を持つフィールド テンプレートを検索します。たとえば、整数値を表示する場合、Dynamic Data は、Integer.ascx という名前のフィールド テンプレートを検索します。詳細については、「ASP.NET Dynamic Data のフィールド テンプレートの概要」を参照してください。

Dynamic Data では、データ フィールドの表示と編集のためにレンダリングされる UI をカスタマイズおよび拡張できます。次のようなカスタマイズを適用できます。

データ フィールドの検証

Dynamic Data では、データ モデルに基づいたデータ フィールドの検証をサポートしています。これには、次の種類の検証が含まれます。

  • 必須フィールドの検証。データ フィールドを null に設定できない場合、そのフィールドに必ず値を指定するように強制します。

  • 長さの検証。データベース フィールドが文字列の場合、フィールドの最大長を強制します。

  • 型の検証。ユーザーによる入力値がデータ フィールドの組み込みデータ型と一致することを強制します。

Dynamic Data では、次のようにデータ フィールドの検証をカスタマイズおよび拡張できます。

  • 属性を使用する。Dynamic Data が既に備えている検証機能を補足する必要があり、既定の System.ComponentModel.DataAnnotations 属性で必要な要件を満たすことができる場合は、このアプローチを使用してください。

  • 部分クラスのメソッドを使用する。データ フィールドに加えられた変更を処理する部分メソッドをオーバーライドすることで、検証をカスタマイズし、独自のビジネス ロジックを追加できます。この方法は、属性では処理できない共通のビジネス ロジックをデータ モデルに追加する場合に使用してください。

詳細については、「方法 : データ モデルのデータ フィールド検証をカスタマイズする」を参照してください。

追加情報

Dynamic Data の詳細については、次のトピックを参照してください。

ページのトップへ

参照

処理手順

チュートリアル : 既存の Web サイトへの Dynamic Data の追加

チュートリアル : 既存の Web サイトへの Dynamic Data の追加

概念

ASP.NET Dynamic Data のフィールド テンプレートの概要

ASP.NET Dynamic Data スキャフォールディングとページ テンプレートの概要

ASP.NET Dynamic Data の概要

参照

System.ComponentModel.DataAnnotations

履歴の変更

日付

履歴

理由

2008 年 7 月

トピックを追加

SP1 機能変更