HOW TO:查詢複雜型別 (Entity Framework)

本主題顯示如何執行會傳回內含複雜型別屬性之實體類型物件的查詢。 如需複雜型別的詳細資訊,請參閱複雜型別物件How to: Create and Modify Complex Types

執行這個範例中的程式碼

  1. AdventureWorks 銷售模型 加入至專案中,並將專案設定為使用 Entity Framework 。 如需詳細資訊,請參閱 HOW TO:使用實體資料模型精靈 (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 實體類型的 EmailPhone 屬性,然後以滑鼠右鍵按一下並選取 [重構至新的複雜型別]。 含有已選取之 EmailPhone 屬性的新複雜型別隨即會加入至 [模型瀏覽器]。

  5. 將新型別重新命名為 EmailPhone。 將 Contact 實體類型中的屬性重新命名為 EmailPhoneComplexType.

    如需使用實體資料模型精靈來建立及修改複雜型別的詳細資訊,請參閱 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