Cómo: Consultar tipos complejos (Entity Framework)

En este tema se muestra cómo ejecutar una consulta que devuelve objetos de tipo entidad que contienen una propiedad de tipo complejo. Para obtener más información acerca de los tipos complejos, vea Objetos de tipo complejo (Entity Framework) y How to: Create and Modify Complex Types.

Para ejecutar el código de este ejemplo

  1. Agregue el Modelo AdventureWorks Sales al proyecto y configúrelo para usar Entity Framework . Para obtener más información, vea Cómo usar el Asistente para Entity Data Model (Entity Framework).

  2. En la página de códigos de la aplicación, agregue las siguientes instrucciones using (Imports en 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. Haga doble clic en el archivo .edmx para mostrar el modelo en la ventana del Explorador de modelos de Entity Designer.

  4. En la superficie de Entity Designer, seleccione las propiedades Email y Phone del tipo de entidad Contact y, a continuación, haga clic con el botón secundario del mouse y seleccione Refactorizar en un nuevo tipo complejo. Un nuevo tipo complejo con las propiedades Email y Phone seleccionadas se agrega al Explorador de modelos.

  5. Cambie el nombre del nuevo tipo a EmailPhone. Cambie el nombre de la propiedad de la entidad Contact a EmailPhoneComplexType..

    Para obtener información sobre cómo crear y modificar tipos complejos utilizando el Asistente para Entity Data Model, vea How to: Refactor Existing Properties into a Complex Type Property (Entity Data Model Tools) y How to: Create and Modify Complex Types.

Ejemplo

En el ejemplo siguiente se ejecuta una consulta que devuelve una colección Contacts. El tipo Contact contiene una propiedad de tipo complejo, EmailPhoneComplexProperty, que se compone de una propiedad EmailAddress y una propiedad Phone. El ejemplo muestra la propiedad ContactID y los valores del tipo complejo 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);
    }
}

Vea también

Referencia

Complex Type Objects
How to: Create and Modify Complex Types