Cara: Menjalankan Kueri yang Mengembalikan Hasil Tipe Primitif
Topik ini menunjukkan cara menjalankan perintah terhadap model konseptual dengan menggunakan EntityCommand, dan cara mengambil hasil PrimitiveType dengan menggunakan EntityDataReader.
Untuk menjalankan kode dalam contoh ini
Tambahkan AdventureWorks Sales Model ke proyek Anda dan konfigurasikan proyek Anda untuk menggunakan Entity Framework. Untuk informasi selengkapnya, lihat Cara: Menggunakan Wizard Model Data Entitas.
Di halaman kode untuk aplikasi Anda, tambahkan pernyataan
using
berikut (Imports
dalam Visual Basic):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;
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
Contoh
Contoh ini menjalankan kueri yang mengembalikan hasil PrimitiveType. Jika Anda meneruskan kueri berikut sebagai argumen ke fungsi ExecutePrimitiveTypeQuery
, fungsi tersebut akan menampilkan harga jual rata-rata dari semua Products
:
SELECT VALUE AVG(p.ListPrice) FROM AdventureWorksEntities.Products as p
Jika Anda meneruskan kueri berparameter, seperti berikut, objek EntityParameter ke properti Parameters pada objek EntityCommand.
CASE WHEN AVG({@score1,@score2,@score3}) < @total THEN TRUE ELSE FALSE END
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();
// 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));
}
}
}
conn.Close();
}
}
Private Shared Sub ExecutePrimitiveTypeQuery(ByVal esqlQuery As String)
If esqlQuery.Length = 0 Then
Console.WriteLine("The query string is empty.")
Exit Sub
End If
Using conn As New EntityConnection("name=AdventureWorksEntities")
conn.Open()
' Create an EntityCommand.
Using cmd As EntityCommand = conn.CreateCommand()
cmd.CommandText = esqlQuery
' Execute the command.
Using rdr As EntityDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
' Start reading results.
While rdr.Read()
Dim record As IExtendedDataRecord = TryCast(rdr, IExtendedDataRecord)
' For PrimitiveType
' the record contains exactly one field.
Dim fieldIndex As Integer = 0
Console.WriteLine("Value: " & record.GetValue(fieldIndex))
End While
End Using
End Using
conn.Close()
End Using
End Sub