Web サービスおよび Entity Data Model (アプリケーション シナリオ)
エンティティ データ モデル (EDM) は、データソースに対して抽象化の概念レイヤを提供します。Object Services は、概念レイヤで定義されたエンティティを、Windows Forms アプリケーションや ASP.NET アプリケーションなどのクライアント アプリケーションで消費可能な CLR オブジェクトに具体化します。エンティティ フレームワーク では、Web サービスや Windows Communication Foundation (WCF) などのエンティティ オブジェクトのリモートおよびメッセージ ベースの交換を可能にする形式に、エンティティ オブジェクトをシリアル化できます。オブジェクトをシリアル化するには、バイナリ ストリームまたはメッセージ ベースのプロトコルを使用したトランスポートのバイナリ シリアル化、XML シリアル化、および WCF コントラクト シリアル化を使用します。詳細については、「オブジェクトのシリアル化 (Entity Framework)」を参照してください。また、オブジェクトをメッセージまたはストリームから受信して、逆シリアル化し、オブジェクト コンテキストにアタッチすることもできます。詳細については、「オブジェクトのアタッチ (Entity Framework)」を参照してください。
ADO.NET Data Services により、アプリケーションで使用できる XML 形式の EDM データに動的にアクセスすることもできます。このエンティティ データには、GET、PUT、POST などの標準の Representational State Transfer (REST) HTTP アクションを使用してアクセスします。詳細については、「ADO.NET Data Services フレームワーク」を参照してください。
エンティティ フレームワーク を使用する Web サービスまたは WCF サービスを作成する際は、以下の点を検討する必要があります。
全グラフのシリアル化は、バイナリ シリアル化および DataContract シリアル化でサポートされています。XML シリアル化では関連オブジェクトがシリアル化されません。
オブジェクトは常に、Detached 状態で逆シリアル化されます。ObjectContext へのオブジェクトのアタッチまたは追加が必要になることがあります。または、プロパティの変更を元のオブジェクトに適用することもできます。詳細については、「オブジェクトのアタッチ (Entity Framework)」を参照してください。
ステートレスなサービスを使用することをお勧めします。オブジェクト コンテキストが要求時または応答時にのみ保持されるように、サービスを設計する必要があります。メッセージ交換のパターンには、オブジェクトを保持したり、データ ソースを再クエリして元のオブジェクトを取得したりする必要なく変更を適用するのに十分な情報が含まれる必要があります。たとえば、クライアントによるオブジェクトの更新を可能にするサービスでは、更新されたオブジェクトが元のオブジェクトと共に返される必要があります。これにより、データベースから元のオブジェクトを取得したり、メモリに元のオブジェクトを保存したりする必要なく、ApplyPropertyChanges メソッドを使用して Web サービスによって、元のオブジェクトに変更を適用できます。詳細については、「デタッチされたオブジェクト対して行われた変更を適用する方法 (Entity Framework)」を参照してください。