次の方法で共有


オブジェクトをプロジェクト データ ソースとして追加する方法 (Entity Framework)

Visual Studio アプリケーションでオブジェクトに基づくデータ ソースを作成できます。プロジェクトでエンティティ型をデータ ソースとして定義した後に、[データ ソース] ウィンドウからフォームに項目をドラッグして、Entity Data Model (EDM) のデータが表示されるフォームを作成できます。これらの項目は、データ ソースにバインドされているフォーム上のコントロールになります。詳細については、「コントロールへのオブジェクトのバインド (Entity Framework)」を参照してください。

このトピックでは、AdventureWorks Sales ModelSalesOrderHeader 型に対するデータ ソースを作成します。このデータ ソースを使用して、エンティティ データにバインドされているコントロールを含む Windows フォームを作成します。これらの手順を実行するには、あらかじめプロジェクトに AdventureWorks Sales Model を追加し、エンティティ フレームワーク が使用されるようにプロジェクトを構成しておく必要があります。具体的な方法については、「Entity Data Model ウィザードを使用する方法 (Entity Framework)」の手順を参照してください。

SalesOrderHeader 型に基づいてデータ ソースを作成するには

  1. 最近 Entity Data Model (EDM) を追加した場合は、プロジェクトをビルドします。

  2. [データ] メニューの [新しいデータ ソースの追加] をクリックします。

  3. [データ ソースの種類を選択] ページで、[オブジェクト] を選択します。

  4. [バインドするオブジェクトを選択] ページで、プロジェクト ノードを展開し、AdventureWorksModel ノードを見つけます。

  5. ツリー ビューで、AdventureWorksModel ノードを展開し、SalesOrderHeader 型を選択します。

  6. [完了] をクリックします。

    [データ ソース] ウィンドウに、SalesOrderHeader データ ソースが追加されます。

Windows フォームにデータ ソース バインド コントロールを追加するには

  1. [データ ソース] ウィンドウで AdventureWorksModel ノードを展開した後に、SalesOrderHeader ノードを展開します。

  2. 1 つ以上のプロパティを SalesOrderHeader ノードからフォームにドラッグします。

    これにより、salesOrderHeaderBindingSource コントロールと salesOrderHeaderBindingNavigator コントロールがフォーム上に作成されます。また、プロパティごとに 1 つのデータ バインド コントロールが、適切なタイトルのラベル コントロールと共に作成されます。

  3. SalesOrderDetail ナビゲーション プロパティをフォームにドラッグします。

  4. これにより、DataSource プロパティが salesOrderHeaderBindingSource に設定され、DataMember プロパティが SalesOrderDetail に設定された salesOrderDetailBindingSource コントロールが作成されます。また、salesOrderDetailDataGridView データ バインド コントロールも、適切なタイトルのラベル コントロールと共に作成されます。

データ ソースをオブジェクト クエリの結果にバインドするには

  1. フォームのコード ページを開き、次に示す using ステートメント (Visual Basic の場合は Imports) を追加します。

    Imports System.Data.Objects
    Imports AdventureWorksModel
    
    using System.Data.Objects;
    using AdventureWorksModel;
    
  2. フォームを定義する部分クラスで、ObjectContext インスタンスを作成し、customerID の定数を定義する次のコードを追加します。

    Dim context As AdventureWorksEntities
    Const customerId As Integer = 277
    
    private AdventureWorksEntities context;
    private const int customerId = 277;
    
  3. フォーム デザイナで、フォームをダブルクリックします。

    フォームのコード ページが開き、フォームの Load イベントを処理するメソッドが作成されます。

  4. Load イベント ハンドラで、次のコードをコピーして貼り付けます。

    ' Initialize the object context.
    context = New AdventureWorksEntities()
    Try
        ' Create a query for orders and related items.
        Dim orderQuery As ObjectQuery(Of SalesOrderHeader) = _
            context.SalesOrderHeader _
                .Where("it.CustomerID = @customerId", _
                New ObjectParameter("customerId", customerId)) _
                .Include("SalesOrderDetail")
    
        ' Set the data source of the binding source to the ObjectResult 
        ' returned when the query is executed.
        SalesOrderHeaderBindingSource.DataSource = _
            orderQuery.Execute(MergeOption.AppendOnly)
    
    Catch ex As EntitySqlException
        MsgBox(ex.Message)
    End Try
    
    // Initialize the object context.
    context = new AdventureWorksEntities();
    
    try
    {
        // Create a query for orders and related items.
        ObjectQuery<SalesOrderHeader> orderQuery = context.SalesOrderHeader
            .Where("it.CustomerID = @customerId",
            new ObjectParameter("customerId", customerId))
            .Include("SalesOrderDetail");
    
        // 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)

概念

コントロールへのオブジェクトのバインド (Entity Framework)
コントロールへのエンティティ データのバインド (アプリケーション シナリオ)