Condividi tramite


Procedura: eseguire una query che restituisce una raccolta di tipi anonimi (Entity Framework)

In questo argomento vengono forniti alcuni esempi di esecuzione di query che restituiscono una raccolta di istanze di un tipo anonimo, ovvero di un tipo non definito nel modello concettuale. Ad esempio, nella query Entity SQL seguente viene restituita una raccolta di tipi anonimi che contiene righe con due colonne (un Integer per ProductID e una stringa per Name): "SELECT p.ProductID, p.Name FROM AdventureWorksEntities.Products as p". Nell'esempio seguente viene restituita una raccolta di prodotti e il tipo Product viene definito nel modello concettuale: "SELECT p FROM AdventureWorksEntities.Products as p".

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>

L'esempio incluso in questo argomento è basato sul modello Sales di AdventureWorks. Per eseguire il codice incluso in questo argomento, è necessario avere già aggiunto il modello Sales di AdventureWorks al progetto e avere configurato il progetto per l'utilizzo di Entity Framework. Per ulteriori informazioni, vedere Procedura: utilizzare la Procedura guidata Entity Data Model (Entity Framework) o Procedura: configurare manualmente un progetto di Entity Framework e Procedura: definire manualmente un modello EDM (Entity Framework).

Esempio

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

Using context As New AdventureWorksEntities
    Dim products As ObjectSet(Of Product) = context.Products

    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 context = new AdventureWorksEntities())
{
    var query =
        from product in context.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 context As New AdventureWorksEntities()
    Dim myQuery As String = "SELECT p.ProductID, p.Name FROM AdventureWorksEntities.Products as p"
    For Each rec As DbDataRecord In New ObjectQuery(Of DbDataRecord)(myQuery, context)
        Console.WriteLine("ID {0}; Name {1}", rec(0), rec(1))
    Next
End Using
using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    string myQuery = @"SELECT p.ProductID, p.Name FROM 
        AdventureWorksEntities.Products as p";

    foreach (DbDataRecord rec in
        new ObjectQuery<DbDataRecord>(myQuery, context))
    {
        Console.WriteLine("ID {0}; Name {1}", rec[0], rec[1]);
    }
}

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

Using context As New AdventureWorksEntities()
    ' Use the Select method to define the projection. 
    Dim query As ObjectQuery(Of DbDataRecord) = context.Products.Select("it.ProductID, it.Name")

    ' Iterate through the collection of data rows. 
    For Each rec As DbDataRecord In query
        Console.WriteLine("ID {0}; Name {1}", rec(0), rec(1))
    Next
End Using
using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    // Use the Select method to define the projection.
    ObjectQuery<DbDataRecord> query =
        context.Products.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]);
    }
}

Vedere anche

Attività

Procedura: eseguire una query che restituisce oggetti di tipo entità (Entity Framework)
Procedura: eseguire una query che restituisce una raccolta di tipi primitivi (Entity Framework)
Procedura: eseguire una query con parametri (Entity Framework)

Concetti

Metodi del generatore di query (Entity Framework)