Procedura: eseguire una query che restituisce risultati PrimitiveType (EntityClient)
In questo argomento viene fornito un esempio per illustrare l'esecuzione di un comando su un modello EDM (Entity Data Model) mediante EntityCommand, nonché il recupero dei risultati PrimitiveType mediante EntityDataReader.
Per eseguire il codice in questo esempio
Aggiungere il modello Sales di Adventure Works al progetto e configurare il progetto per l'utilizzo di Entity Framework. A tale scopo, eseguire una delle operazioni seguenti:
Se gli strumenti EDM (Entity Dati Model) sono stati installati, completare la procedura descritta in Procedura: utilizzare la procedura guidata Entity Data Model (Entity Framework).
In caso contrario, completare le procedure descritte in Procedura: configurare manualmente un progetto di Entity Framework e in Procedura: definire manualmente un modello EDM (Entity Framework).
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.Data.SqlClient Imports System.Data.EntityClient Imports System.Data.Metadata.Edm Imports System.IO ' Add AdventureWorksModel prepended with the root namespace for the project. 'Imports ProjectName.AdventureWorksModel
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 AdventureWorksModel; using System.Data.Metadata.Edm;
Esempio
Per testare il codice, passare la query seguente come argomento alla funzione ExecutePrimitiveTypeQuery
:
"SELECT VALUE AVG(p.ListPrice) FROM AdventureWorksEntities.Product as p"
La query precedente restituisce il risultato PrimitiveType.
Sub ExecutePrimitiveTypeQuery(ByVal esqlQuery As String)
If (esqlQuery.Length = 0) Then
Console.WriteLine("The query string is empty.")
Return
End If
Using conn As EntityConnection = New EntityConnection("name=AdventureWorksEntities")
conn.Open()
Try
' Create an EntityCommand.
Using cmd As EntityCommand = conn.CreateCommand()
cmd.CommandText = esqlQuery
' Execute the command.
Using reader As EntityDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
Do While (reader.Read())
Dim record As IExtendedDataRecord = CType(reader, IExtendedDataRecord)
' For PrimitiveType
' the record contains exactly one field.
Dim fieldIndex As Integer
fieldIndex = 0
Console.WriteLine("Value: " + record.GetValue(fieldIndex))
Loop
End Using
End Using
Catch ex As Exception
Console.WriteLine(ex.ToString())
End Try
conn.Close()
End Using
End Sub
static void ExecutePrimitiveTypeQuery(string esqlQuery)
{
if (esqlQuery.Length == 0)
{
Console.WriteLine("The query string is empty.");
return;
}
using (EntityConnection conn =
new EntityConnection("name=AdventureWorksEntities"))
{
conn.Open();
try
{
// Create an EntityCommand.
using (EntityCommand cmd = conn.CreateCommand())
{
cmd.CommandText = esqlQuery;
// Execute the command.
using (EntityDataReader rdr =
cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
// Start reading results.
while (rdr.Read())
{
IExtendedDataRecord record = rdr as IExtendedDataRecord;
// For PrimitiveType
// the record contains exactly one field.
int fieldIndex = 0;
Console.WriteLine("Value: " + record.GetValue(fieldIndex));
}
}
}
}
catch (EntityException ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
}
}