Condividi tramite


Procedura: esplorare relazioni con l'operatore NAVIGATE

In questo argomento viene illustrato come eseguire un comando su un modello concettuale usando un oggetto EntityCommand e viene mostrato come recuperare i risultati di RefType usando un oggetto EntityDataReader.

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 altre informazioni, vedere Procedura: Usare la procedura guidata di Entity Data Model.

  2. Nella tabella codici per l'applicazione aggiungere le direttive seguenti using (Imports in Visual Basic):

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.Common;
    using System.Data.EntityClient;
    using System.Data.Metadata.Edm;
    
    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
    
    

Esempio

Nell'esempio seguente viene illustrato come esplorare relazioni in Entity SQL usando l'operatore NAVIGATE. L'operatore Navigate accetta i parametri seguenti: un'istanza di un'entità, il tipo di relazione, l'entità finale della relazione e l'inizio della relazione. Facoltativamente, è possibile passare all'operatore Navigate solo un'istanza di un'entità e il tipo di relazione.

using (EntityConnection conn =
    new EntityConnection("name=AdventureWorksEntities"))
{
    conn.Open();
    // Create an EntityCommand.
    using (EntityCommand cmd = conn.CreateCommand())
    {
        // Create an Entity SQL query.
        string esqlQuery =
            @"SELECT address.AddressID, (SELECT VALUE DEREF(soh) FROM
          NAVIGATE(address, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID)
          AS soh) FROM AdventureWorksEntities.Addresses AS address";

        cmd.CommandText = esqlQuery;

        // Execute the command.
        using (DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
        {
            // Start reading.
            while (rdr.Read())
            {
                Console.WriteLine(rdr["AddressID"]);
            }
        }
    }
    conn.Close();
}
Using conn As New EntityConnection("name=AdventureWorksEntities")
    conn.Open()
    ' Create an EntityCommand. 
    Using cmd As EntityCommand = conn.CreateCommand()
        ' Create an Entity SQL query. 
        Dim esqlQuery As String = "SELECT address.AddressID, (SELECT VALUE DEREF(soh) FROM " & _
            " NAVIGATE(address, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) " & _
            " AS soh) FROM AdventureWorksEntities.Addresses AS address"


        cmd.CommandText = esqlQuery

        ' Execute the command. 
        Using rdr As DbDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
            ' Start reading. 
            While rdr.Read()
                Console.WriteLine(rdr("AddressID"))
            End While
        End Using
    End Using
    conn.Close()
End Using

Vedi anche