如何:查询复杂类型(实体框架)

本主题演示如何执行返回包含复杂类型属性的实体类型对象的查询。 有关复杂类型的更多信息,请参见复杂类型对象(实体框架)How to: Create and Modify Complex Types

运行本示例中的代码

  1. AdventureWorks 销售模型添加到您的项目并将项目配置为使用实体框架 。 有关更多信息,请参见如何:使用实体数据模型向导(实体框架)

  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);
    }
}

另请参见

参考