オブジェクトをプロジェクト データ ソースとして追加する方法 (Entity Framework)
Visual Studio アプリケーションでオブジェクトに基づくデータ ソースを作成できます。 プロジェクトでエンティティ型をデータ ソースとして定義した後に、[データ ソース] ウィンドウからフォームに項目をドラッグして、エンティティ データが表示されるフォームを作成できます。 これらの項目は、データ ソースにバインドされているフォーム上のコントロールになります。 詳細については、「コントロールへのオブジェクトのバインド (Entity Framework)」を参照してください。
このトピックでは、AdventureWorks Sales Model の SalesOrderHeader 型に対するデータ ソースを作成します。 このデータ ソースを使用して、エンティティ データにバインドされているコントロールを含む Windows フォームを作成します。 これらの手順を実行するには、あらかじめプロジェクトに AdventureWorks Sales Model を追加し、Entity Framework が使用されるようにプロジェクトを構成しておく必要があります。 具体的な方法については、「Entity Data Model ウィザードを使用する方法 (Entity Framework)」の手順を参照してください。
SalesOrderHeader 型に基づいてデータ ソースを作成するには
最近 Entity Data Model アイテムを追加した場合は、プロジェクトをビルドします。
[データ] メニューの [新しいデータ ソースの追加] をクリックします。
[データ ソースの種類を選択] ページで、[オブジェクト] を選択します。
[バインドするオブジェクトを選択] ページで、プロジェクト ノードを展開し、プロジェクトの名前空間ノードを展開して、ツリー ビューでSalesOrderHeader 型を選択します。
[完了] をクリックします。
[データ ソース] ウィンドウに、SalesOrderHeader データ ソースが追加されます。
Windows フォームにデータ ソース バインド コントロールを追加するには
[データ ソース] ウィンドウで、SalesOrderHeader ノードを展開します。
1 つ以上のプロパティを SalesOrderHeader ノードからフォームにドラッグします。
これにより、salesOrderHeaderBindingSource コントロールと salesOrderHeaderBindingNavigator コントロールがフォーム上に作成されます。 また、プロパティごとに 1 つのデータ バインド コントロールが、適切なタイトルのラベル コントロールと共に作成されます。
SalesOrderDetail ナビゲーション プロパティをフォームにドラッグします。
これにより、DataSource プロパティが salesOrderHeaderBindingSource に設定され、DataMember プロパティが SalesOrderDetail に設定された salesOrderDetailBindingSource コントロールが作成されます。 また、salesOrderDetailDataGridView データ バインド コントロールも、適切なタイトルのラベル コントロールと共にフォーム上に作成されます。
データ ソースをオブジェクト クエリの結果にバインドするには
フォームのコード ページを開き、次に示す using ステートメント (Visual Basic の場合は Imports) を追加します。
using System.Data.Objects;
フォームを定義する部分クラスで、ObjectContext インスタンスを作成し、customerID の定数を定義する次のコードを追加します。
private AdventureWorksEntities context; private const int customerId = 277;
フォーム デザイナーで、フォームをダブルクリックします。
フォームのコード ページが開き、フォームの Load イベントを処理するメソッドが作成されます。
Load イベント ハンドラーで、次のコードをコピーして貼り付けます。
// Initialize the object context. context = new AdventureWorksEntities(); try { // Create a query for orders and related items. var orderQuery = context.SalesOrderHeaders .Where("it.CustomerID = @customerId", new ObjectParameter("customerId", customerId)) .Include("SalesOrderDetails"); // Set the data source of the binding source to the ObjectResult // returned when the query is executed. salesOrderHeaderBindingSource.DataSource = orderQuery.Execute(MergeOption.AppendOnly); } catch (EntitySqlException ex) { MessageBox.Show(ex.Message); }
このコードでは、特定の顧客の SalesOrderHeader および関連の SalesOrderDetail オブジェクトのコレクションを返すクエリを実行し、SalesOrderHeader オブジェクトのコレクションを salesOrderHeaderBindingSource にバインドしています。
参照
処理手順
オブジェクトを Windows Presentation Foundation コントロールにバインドする方法 (Entity Framework)
オブジェクトを Windows フォーム コントロールにバインドする方法 (Entity Framework)