Как запрашивать сложные типы (платформа Entity Framework)
В этом разделе показано выполнение запроса, возвращающего объекты типа сущности, содержащие сложное свойство типа. Дополнительные сведения о сложных типах см. в разделах Объекты сложных типов (платформа Entity Framework) и How to: Create and Modify Complex Types.
Выполнение кода в этом примере
Добавьте Модель AdventureWorks Sales к проекту и настройте проект на использование Entity Framework . Дополнительные сведения см. в разделе Как использовать мастер моделей EDM (платформа Entity Framework).
На странице кода приложения добавьте следующие инструкции 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;
Дважды щелкните EDMX-файл, чтобы вывести модель в окне обозревателя моделей конструктора сущностей.
В области конструктора сущностей выделите свойства Email и Phone типа сущности Contact, затем щелкните правой кнопкой мыши и выберите команду Реструктурировать в новый сложный тип. Новый сложный тип с выбранными свойствами Email и Phone будет добавлен в обозреватель моделей.
Переименуйте новый тип в 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);
}
}