Procedura: eseguire query su tipi complessi (Entity Framework)

In questo argomento viene illustrato come eseguire una query che restituisce oggetti di tipo entità contenenti una proprietà di tipo complesso. Per ulteriori informazioni sui tipi complessi, vedere Oggetti di tipo complesso (Entity Framework) e How to: Create and Modify Complex Types.

Per eseguire il codice in questo esempio

  1. Aggiungere il Modello Sales di AdventureWorks al progetto e configurare il progetto per l'utilizzo di Entity Framework . Per ulteriori informazioni, vedere Procedura: utilizzare la procedura guidata Entity Data Model (Entity Framework).

  2. Nella tabella codici per l'applicazione aggiungere le istruzioni using seguenti (Imports in 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. Fare doppio clic sul file edmx per visualizzare il modello nella finestra Browser modello di Entity Designer.

  4. Nell'area di Entity Designer selezionare le proprietà Email e Phone del tipo di entità Contact, quindi fare clic con il pulsante destro del mouse e scegliere Effettua refactoring nel nuovo tipo complesso. Un nuovo tipo complesso con le proprietà selezionate Email e Phone verrà aggiunto a Browser modello.

  5. Rinominare il nuovo tipo in EmailPhone. Rinominare la proprietà del tipo di entità Contact in EmailPhoneComplexType.

    Per informazioni sulla creazione e la modifica di tipi complessi tramite la procedura guidata Entity Data Model, vedere How to: Refactor Existing Properties into a Complex Type Property (Entity Data Model Tools) eHow to: Create and Modify Complex Types.

Esempio

Nell'esempio seguente viene eseguita una query che restituisce una raccolta di Contacts. Il tipo Contact contiene una proprietà di tipo complesso, EmailPhoneComplexProperty, costituita da una proprietà EmailAddress e da una proprietà Phone. L'esempio restituisce la proprietà ContactID e i valori del tipo complesso 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);
    }
}

Vedere anche

Riferimento

Complex Type Objects
How to: Create and Modify Complex Types