Как запрашивать сложные типы (платформа Entity Framework)

В этом разделе показано выполнение запроса, возвращающего объекты типа сущности, содержащие сложное свойство типа. Дополнительные сведения о сложных типах см. в разделах Объекты сложных типов (платформа Entity Framework) и How to: Create and Modify Complex Types.

Выполнение кода в этом примере

  1. Добавьте Модель AdventureWorks Sales к проекту и настройте проект на использование Entity Framework . Дополнительные сведения см. в разделе Как использовать мастер моделей EDM (платформа Entity Framework).

  2. На странице кода приложения добавьте следующие инструкции using (Imports в Visual Basic):

    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. В области конструктора сущностей выделите свойства Email и Phone типа сущности Contact, затем щелкните правой кнопкой мыши и выберите команду Реструктурировать в новый сложный тип. Новый сложный тип с выбранными свойствами Email и Phone будет добавлен в обозреватель моделей.

  5. Переименуйте новый тип в EmailPhone. Переименуйте свойство в типе сущности Contact на EmailPhoneComplexType.

    Сведения о создании и изменении сложных типов с помощью мастера моделей EDM см. в разделах 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);
    }
}

См. также

Справочник