Entity Framework プロバイダー (WCF Data Services)

WCF Data Services と同様に、ADO.NET Entity Framework は、エンティティ リレーションシップ モデルの型である Entity Data Model をベースにしています。 Entity Framework は、Entity Data Model の実装 (概念モデル) に対する操作をデータ ソースに対する同等の操作に変換します。 このことから、Entity Framework はリレーショナル データに基づくデータ サービスの理想的なプロバイダーとして使用でき、また、Entity Framework をサポートするデータ プロバイダーが存在するデータベースであれば、WCF Data Services で使用できます。 現在 Entity Framework をサポートしているデータ ソースの一覧については、Entity Framework 用の「Third-Party Providers」を参照してください。

概念モデルでは、エンティティ コンテナーはサービスのルートです。 データ サービスでデータを公開する前に、Entity Framework で概念モデルを定義する必要があります。 Entity Framework には、概念モデルに基づいてオブジェクト レイヤーを自動生成するツールが用意されています。 オブジェクト レイヤーには、ObjectContext クラスから継承されたエンティティ型とコンテナー クラスが含まれています。 通常、コンテナー クラスにも、指定された型のエンティティの IQueryable<T> コレクションを返すエンティティ セット プロパティがあります。 Entity Framework プロバイダーを使用する場合は、次の Northwind データ サービスの例に示すように、データ サービスの派生元の DataService<T> の種類としてこのコンテナー クラスを指定します。

Public Class Northwind
    Inherits DataService(Of NorthwindEntities)
public class Northwind : DataService<NorthwindEntities>

詳細については、「方法: ADO.NET Entity Framework データ ソースを使用してデータ サービスを作成する (WCF Data Services)」を参照してください。

Entity Framework の Code First 機能は、Entity Framework 4.1 で導入されました。 Code First を使用してデータ モデルを定義する場合は、ObjectContext クラスではなく DbContext クラスから派生したコンテキスト クラスを定義します。 DbContext インスタンスは、派生したデータ サービスの DataService<T> の型として使用することもできます。

WCF Data Services は、エンティティの同時実行トークンを定義できるようにすることで、オプティミスティック同時実行制御モデルをサポートしています。 この同時実行トークンは、エンティティの 1 つ以上のプロパティが含まれており、要求、更新、または削除されているデータに対して行われた変更があるかどうかを判断するためにデータ サービスによって使用されます。 要求内の eTag から取得したトークンの値がエンティティの現在の値と異なる場合、データ サービスで例外が発生します。 プロパティが同時実行トークンの一部であることを示す場合、Entity Framework プロバイダーで定義されているデータ モデルに属性 ConcurrencyMode="Fixed" を適用する必要があります。 同時実行トークンには、キー プロパティまたはナビゲーション プロパティを含めることはできません。詳細については、「データ サービスの更新 (WCF Data Services)」を参照してください。

Entity Framework の詳細については、「Entity Framework Overview」を参照してください。

関連項目

概念

データ サービス プロバイダー (WCF Data Services)

リフレクション プロバイダー (WCF Data Services)

Entity Data Model