ADO.NET Entity Framework アプリケーションでは、オブジェクトの変更はオブジェクト コンテキストによって追跡されます。ただし、オブジェクト コンテキストを利用できない別の階層でオブジェクトの操作が必要な場合、変更の追跡方法を指定し、これらの変更内容をオブジェクト コンテキストにレポートする必要があります。Entity Framework バージョン 4 以降では、自己追跡エンティティを使用してすべての階層で変更を追跡できるようになりました。自己追跡エンティティは、スカラー プロパティ、複合プロパティ、およびナビゲーション プロパティの変更を報告できるエンティティ型を生成する、テキスト テンプレート変換ツールキット (T4) テンプレートから構築されます。Visual Studio 2010 では、ADO.NET Self-Tracking Entity Generator テンプレートを使用できます。詳細については、「チュートリアル: 自己追跡エンティティのシリアル化」を参照してください。
このサンプルは、MSDN コード ギャラリーの Entity Framework ドキュメントのサンプルのサイトで入手できます。
シナリオ
このサンプルでは、エンティティ グラフを返す一連の操作を WCF サービスで公開する方法を示します。次に、クライアント アプリケーションでそのグラフを操作し、Entity Framework を使用してデータベースへの更新を検証および保存するサービス操作に変更内容を送信します。
前提条件
このサンプルを実行する前に、次のソフトウェアがインストールされていることを確認してください。
.NET Framework 4 を含む Visual Studio 2010
SQL Server 2005 または 2008 データベース エンジン
(サンプルに含まれる) School サンプル データベース
SQL Server Management Studio (省略可能)
サンプルのビルド
STESchoolModelExample は、5 つのプロジェクトで構成されています。
STESchoolModel: School ベースのモデルおよび自己追跡エンティティ テンプレートが含まれるクラス ライブラリ プロジェクト。これには、自己追跡エンティティ型テンプレートおよび型指定された System.Data.Objects.ObjectContext テンプレートが含まれます。
STESchoolModelTypes: STESchoolModel プロジェクトに配置される自己追跡エンティティ型テンプレートにリンクするクラス ライブラリ プロジェクト。
STESchoolModelService エンティティ グラフを返し、クライアントに対して行われた変更をデータベースに適用する一連の操作を公開する Windows Communication Foundation (WCF) サービス アプリケーション。
STESchoolModelConsoleTest: コンソール クライアント アプリケーション。
STESchoolModelWPFTest: Windows Presentation Foundation (WPF) クライアント アプリケーション。
サンプルをビルドするには、次の手順に従います。
STESchoolModelExample アプリケーションをビルドするには
(省略可能) 使用している SQL Server インスタンスに School サンプル データベースが存在しない場合は、プロジェクトに含まれている CreateSchool.sql スクリプトを実行します。
Visual Studio でソリューション ファイルを開きます。
(省略可能) School データベースを、ローカル コンピューター上の既定のインスタンス以外の SQL Server のインスタンスに作成した場合は、STESchoolModelService、STESchoolModelConsoleTest、STESchoolModelWPFTest の各プロジェクトの構成ファイルの接続文字列でデータ ソースを変更して、適切な SQL Server インスタンスを指定します。
ソリューションをビルドします。
サンプルの実行
サンプルを実行するには、次の手順に従います。
クライアント アプリケーションを実行するには
STESchoolModelWPFTest および STESchoolModelConsoleTest クライアント プロジェクトのサービス参照を更新します。参照を更新するには、ソリューション エクスプローラーで [サービス参照] フォルダーの下の [ServiceReference1] を右クリックし、[サービス参照の更新] をクリックします。
STESchoolModelWPFTest または STESchoolModelConsoleTest をスタートアップ プロジェクトに設定します。
アプリケーションを実行します。クライアントが参照されるサービスとの通信に失敗した場合は、次の手順に従います。
クライアント プロジェクトから [ServiceReference1] を削除します。
サービス参照を再度追加します。サービスへの参照を追加するには、ソリューション エクスプローラーで [サービス参照] フォルダーを右クリックし、[サービス参照の追加] をクリックします。
サービスを構成します。STESchoolModelService は System.Collections.Generic.List を返すため、サービス参照を構成する必要があります。サービス名 (ServiceReference1) を右クリックし、[サービス参照の構成] をクリックします。[サービス参照の構成] ダイアログ ボックスで、[コレクション型] ボックスの一覧から [System.Collections.Generic.List] 型を選択します。
アプリケーションを実行します。
サンプルの削除
STESchoolModelExample サンプルを削除するには、次の手順に従います。
STESchoolModelExample アプリケーションを削除するには
プロジェクト ディレクトリおよびコンテンツを削除します。
(省略可能) SQL Server のインスタンスから School データベースを削除します。
参照
その他のリソース
ADO.NET Entity Framework
Entity Data Model
ADO.NET Entity Data Model ツール
コントロールへのオブジェクトのバインド
チュートリアル: 自己追跡エンティティのシリアル化