方法: 複合型をクエリする (Entity Framework)

このトピックでは、複合型プロパティを含むエンティティ型オブジェクトを返すクエリを実行する方法について説明します。 複合型の詳細については、「複合型オブジェクト (Entity Framework)」および「How to: Create and Modify Complex Types」を参照してください。

この例のコードを実行するには

  1. Add the AdventureWorks Sales Model to your project and configure your project to use the Entity Framework . 詳細については、「Entity Data Model ウィザードを使用する方法 (Entity Framework)」を参照してください。

  2. アプリケーションのコード ページで、次の using ステートメント (Visual Basic の場合は Imports) を追加します。

    Imports System
    Imports System.Collections.Generic
    Imports System.Collections
    Imports System.Data.Common
    Imports System.Data
    Imports System.IO
    Imports System.Data.SqlClient
    Imports System.Data.EntityClient
    Imports System.Data.Metadata.Edm
    
    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.Data.Common;
    using System.Data;
    using System.IO;
    using System.Data.SqlClient;
    using System.Data.EntityClient;
    using System.Data.Metadata.Edm;
    
  3. .edmx ファイルをダブルクリックして、エンティティ デザイナーの [モデル ブラウザー] ウィンドウにモデルを表示します。

  4. エンティティ デザイナー画面で、Contact エンティティ型の Email プロパティと Phone プロパティを選択し、右クリックして [新しい複合型へのリファクター] を選択します。 選択した Email プロパティと Phone プロパティの新しい複合型がモデル ブラウザーに追加されます。

  5. 新しい型の名前を EmailPhone に変更します。 Contact エンティティ型のプロパティの名前を EmailPhoneComplexType. に変更します。

    Entity Data Model ウィザードを使用した複合型の作成と変更の詳細については、「How to: Refactor Existing Properties into a Complex Type Property (Entity Data Model Tools)」および「How to: Create and Modify Complex Types」を参照してください。

次の例では、Contacts のコレクションを返すクエリを実行します。 Contact 型には複合型プロパティ EmailPhoneComplexProperty が含まれています。このプロパティは EmailAddress プロパティおよび Phone プロパティで構成されます。 この例では、ContactID プロパティと EmailPhoneComplexType 複合型の値が出力されます。

Using context As New AdventureWorksEntities()
    Dim contacts = From contact In context.Contacts _
            Where contact.ContactID = 3 _
            Select contact

    For Each contact As Contact In contacts
        Console.WriteLine("Contact Id: " & contact.ContactID)
        Console.WriteLine("Contact's email: " & contact.EmailPhoneComplexProperty.EmailAddress)
        Console.WriteLine("Contact's phone#: " & contact.EmailPhoneComplexProperty.Phone)
    Next
End Using

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    var contacts =
        from contact in context.Contacts
        where contact.ContactID == 3
        select contact;

    foreach (Contact contact in contacts)
    {
        Console.WriteLine("Contact Id: " + contact.ContactID);
        Console.WriteLine("Contact's email: " + contact.EmailPhoneComplexProperty.EmailAddress);
        Console.WriteLine("Contact's phone#: " + contact.EmailPhoneComplexProperty.Phone);
    }
}

参照

リファレンス

Complex Type Objects
How to: Create and Modify Complex Types