Share via


Procedura: eseguire una query che restituisce un tipo anonimo (Entity Framework)

In questo argomento vengono forniti alcuni esempi di come eseguire query che restituiscono un insieme di istanze di un tipo anonimo, ad esempio insieme, riga e riferimento. Il risultato della query in questi esempi è costituito da un insieme di tipi di riga. Per ulteriori informazioni, vedere Type System (Entity SQL). Lo stesso esempio viene illustrato utilizzando ognuna delle tecnologie di query Entity Framework seguenti:

  • LINQ to Entities

  • Entity SQL con ObjectQuery<T>

  • Metodi del generatore di query di ObjectQuery<T>

Gli esempi inclusi in questo argomento sono basati sul modello Sales di AdventureWorks. Per eseguire il codice incluso in questo esempio, è necessario avere già aggiunto il modello Sales di AdventureWorks al progetto e avere configurato il progetto per l'utilizzo di Entity Framework. A tale scopo, completare le procedure descritte in Procedura: configurare manualmente un progetto di Entity Framework e Procedura: definire manualmente un modello EDM (Entity Framework). È inoltre possibile utilizzare la procedura guidata Entity Data Model per definire il modello Sales di AdventureWorks. Per ulteriori informazioni, vedere Procedura: utilizzare la procedura guidata Entity Data Model (Entity Framework).

Esempio

Di seguito viene fornito un esempio di utilizzo di LINQ to Entities.

Using AWEntities As New AdventureWorksEntities
    Dim products As ObjectQuery(Of Product) = AWEntities.Product

    Dim query = _
        From product In products _
        Select New With _
        { _
            .ProductId = product.ProductID, _
            .ProductName = product.Name _
        }

    Console.WriteLine("Product Info:")
    For Each productInfo In query
        Console.WriteLine("Product Id: {0} Product name: {1} ", _
                productInfo.ProductId, productInfo.ProductName)
    Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
    ObjectQuery<Product> products = AWEntities.Product;
    var query =
        from product in products
        select new
        {
            ProductId = product.ProductID,
            ProductName = product.Name
        };

    Console.WriteLine("Product Info:");
    foreach (var productInfo in query)
    {
        Console.WriteLine("Product Id: {0} Product name: {1} ",
            productInfo.ProductId, productInfo.ProductName);
    }
}

Di seguito viene fornito un esempio di utilizzo di Entity SQL.

Using advWorksContext As AdventureWorksEntities = New AdventureWorksEntities
    Dim commandText As String = "SELECT p.ProductID, p.Name FROM " & _
        "AdventureWorksEntities.Product as p"

    Try
        Dim query As New ObjectQuery(Of DbDataRecord)(commandText, advWorksContext)

        For Each result As DbDataRecord In query
            Console.WriteLine("ID {0} Name {1}", result.Item(0), result.Item(1))
        Next
    Catch ex As EntityException
        Console.WriteLine(ex.ToString())
    Catch ex As InvalidOperationException
        Console.WriteLine(ex.ToString())
    End Try
End Using
using (AdventureWorksEntities advWorksContext =
    new AdventureWorksEntities())
{
    string myQuery = @"SELECT p.ProductID, p.Name FROM 
        AdventureWorksEntities.Product as p";
    try
    {
        foreach (DbDataRecord rec in
            new ObjectQuery<DbDataRecord>(myQuery, advWorksContext))
        {
            Console.WriteLine("ID {0}; Name {1}", rec[0], rec[1]);
        }
    }
    catch (EntityException ex)
    {
        Console.WriteLine(ex.ToString());
    }
    catch (InvalidOperationException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Di seguito viene fornito un esempio del metodo del generatore di query.

Using advWorksContext As AdventureWorksEntities = _
    New AdventureWorksEntities

    Try
        ' Use the Select method to define the projection.
        Dim query As ObjectQuery(Of DbDataRecord) = _
            advWorksContext.Product.Select("it.ProductID, it.Name")

        ' Iterate through the collection of data rows.
        For Each result As DbDataRecord In query
            Console.WriteLine("ID{0}: Name {1}", _
                              result.Item(0), result.Item(1))
        Next

    Catch ex As EntitySqlException
        Console.WriteLine(ex.ToString())
    End Try
End Using
using (AdventureWorksEntities advWorksContext =
    new AdventureWorksEntities())
{
    try
    {
        // Use the Select method to define the projection.
        ObjectQuery<DbDataRecord> query =
            advWorksContext.Product.Select("it.ProductID, it.Name");

        // Iterate through the collection of data rows.
        foreach (DbDataRecord rec in query)
        {
            Console.WriteLine("ID {0}; Name {1}", rec[0], rec[1]);
        }
    }
    catch (EntitySqlException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Vedere anche

Attività

Procedura: eseguire una query che restituisce un tipo di entità (Entity Framework)
Procedura: eseguire una query che restituisce un tipo primitivo (Entity Framework)
Procedura: eseguire una query con parametri (Entity Framework)

Concetti

Metodi del generatore di query (Entity Framework)

Altre risorse

Esecuzione di query su Entity Data Model (attività di Entity Framework)