Object Services の概要 (Entity Framework)
Object Services は、Entity Framework のコンポーネントです。このコンポーネントは、エンティティ型のインスタンスである厳密に型指定された CLR オブジェクトとして表現されるデータのクエリ、挿入、更新、および削除を可能にします。Object Services は、概念モデルで定義された型に対して、統合言語クエリ (LINQ) および Entity SQL クエリの両方をサポートしています。Object Services は、返されたデータをオブジェクトとして具体化し、オブジェクトの変更をデータ ソースに保存します。また、変更の追跡、コントロールへのオブジェクトのバインド、同時実行の処理などの機能も提供します。 Object Services は、System.Data.Objects 名前空間および System.Data.Objects.DataClasses 名前空間のクラスによって実装されます。
オブジェクト コンテキスト
ObjectContext クラスは、概念モデルで定義されたエンティティ型のインスタンスであるオブジェクト形式のデータを扱うための主要なクラスです。ObjectContext クラスのインスタンスでは、次のものがカプセル化されます。
データベースへの接続 (EntityConnection オブジェクトの形式)
モデルを記述するメタデータ (MetadataWorkspace オブジェクトの形式)。
作成、更新、および削除の操作時にオブジェクトを追跡する ObjectStateManager オブジェクト。
Entity Framework ツールは、概念スキーマ定義言語 (CSDL) ファイルを使用して、オブジェクト レイヤー コードを生成します。このコードは、エンティティ データをオブジェクトとして操作するためと、Object Services 機能を利用するために使用します。生成されたこのコードには、次のデータ クラスが含まれます。
型指定された ObjectContext クラス。このクラスは、モデルの EntityContainer を表し、ObjectContext から派生します。
エンティティ型を表し、EntityObject から継承したクラス。
複合型を表し、ComplexObject から継承したクラス。
メモ : |
---|
The ObjectContext class is not thread safe.マルチスレッドのシナリオでは、ObjectContext 内のデータ オブジェクトの整合性を確保できません。 |
Object Services の使用
Object Services では、Entity Framework に対するプログラミングで次の動作がサポートされています。
オブジェクトとしてのデータのクエリ
Object Services を使用すると、LINQ、Entity SQL、またはクエリ ビルダー メソッドを使用して概念モデルに対するクエリを実行し、データをオブジェクトとして返すことができます。詳細については、「オブジェクト クエリ (Entity Framework)」を参照してください。
クエリ結果の構造化
既定では、Object Services はクエリで要求されたオブジェクトのみを返します。オブジェクト間にリレーションシップが存在する場合は、クエリで関連オブジェクトを返すかどうかを指定できます。また、後続の要求で関連オブジェクトを読み込むこともできます。詳細については、「クエリ結果の構造化 (Entity Framework)」を参照してください。
ビルダー メソッドを使用したクエリの作成
Object Services は、Entity SQL クエリおよび LINQ to Entities クエリに相当するクエリの構築に使用するメソッドを ObjectQuery で提供します。詳細については、「クエリ ビルダー メソッド (Entity Framework)」を参照してください。
オブジェクトの追加、変更、および削除
Object Services は、データ オブジェクトをメモリに保存し、オブジェクト コンテキスト内でのオブジェクトの追加、変更、および削除を可能にします。オブジェクトに加えられた変更は、オブジェクト コンテキストによって追跡されます。詳細については、「オブジェクトの作成、追加、変更、および削除 (Entity Framework)」を参照してください。
データ ソースへの変更の保存
Object Services では、オブジェクト コンテキストのオブジェクトに対する変更がキャッシュされます。明示的な要求に応じて、Object Services はそれらの変更をデータ ソースに保存します。詳細については、「変更の保存と同時実行制御の管理 (Entity Framework)」を参照してください。
コントロールへのオブジェクトのバインド
Objects Services を使用すると、DataGridView コントロールなど、データ バインドをサポートするコントロールにオブジェクトをバインドできます。詳細については、「コントロールへのオブジェクトのバインド (Entity Framework)」を参照してください。
オブジェクトのアタッチ
Object Services を使用すると、既存のオブジェクトをオブジェクト コンテキストに直接アタッチすることができます。これにより、ASP.NET アプリケーションのビュー ステートに保存されていたオブジェクトや、リモート メソッド呼び出しまたは Web サービスによって返されたオブジェクトをアタッチできます。詳細については、「オブジェクトのアタッチとデタッチ (Entity Framework)」を参照してください。
オブジェクトのデタッチ
オブジェクトが Windows フォーム コントロールにバインドされている場合など、アプリケーションを実行している間、オブジェクト コンテキスト インスタンスを保持することが必要になる場合があります。Object Services を使用すると、不要になったオブジェクトをデタッチしてリソースを解放することにより、オブジェクト コンテキストのサイズを管理することができます。詳細については、「オブジェクトのアタッチとデタッチ (Entity Framework)」を参照してください。
オブジェクトのシリアル化
Object Services は、オブジェクトの Windows Communication Foundation (WCF) データ コントラクト シリアル化、バイナリ シリアル化、および XML シリアル化をサポートしています。データ コントラクト シリアル化は、Web サービスのシナリオに便利です。バイナリ シリアル化は、ビュー ステートを使用して ASP.NET アプリケーションでオブジェクトを保持する場合に特に便利です。詳細については、「オブジェクトのシリアル化 (Entity Framework)」を参照してください。
オブジェクト ID の管理と変更の追跡
Object Services は ID 値を使用して、オブジェクトの変更の追跡、競合の処理、データ ソースからのデータの取得のタイミングの決定などを行います。詳細については、「ID 解決、状態管理、および変更の追跡 (Entity Framework)」を参照してください。
同時実行の管理
1 つまたは複数のプロパティの ConcurrencyMode 属性が "fixed" に設定されている場合、Object Services は同時実行を追跡できます。 この場合、同時実行違反が検出されると、Object Services で特定の例外が発生します。詳細については、「変更の保存と同時実行制御の管理 (Entity Framework)」を参照してください。
接続の管理
Object Services を使用すると、オブジェクト コンテキストで使用する接続を明示的に管理し、そのオブジェクト コンテキストに独自の接続を提供することができます。詳細については、「接続とトランザクションの管理 (Entity Framework)」を参照してください。
トランザクションの管理
Object Services は、データ ソースに対する操作を調整し、分散トランザクションに参加するために .NET Framework トランザクションをサポートしています。詳細については、「接続とトランザクションの管理 (Entity Framework)」を参照してください。
概念モデルでのカスタム オブジェクトの使用
Object Services を使用すると、独自のオブジェクトを手動で定義することも、概念モデルで既存のオブジェクトを使用することもできます。詳細については、「オブジェクトのカスタマイズ (Entity Framework)」を参照してください。