Share via


DataContext.ExecuteQuery Metode

Definisi

Overload

ExecuteQuery(Type, String, Object[])

Menjalankan kueri SQL langsung pada database.

ExecuteQuery<TResult>(String, Object[])

Menjalankan kueri SQL langsung pada database dan mengembalikan objek.

ExecuteQuery(Type, String, Object[])

Menjalankan kueri SQL langsung pada database.

public:
 System::Collections::IEnumerable ^ ExecuteQuery(Type ^ elementType, System::String ^ query, ... cli::array <System::Object ^> ^ parameters);
public System.Collections.IEnumerable ExecuteQuery (Type elementType, string query, params object[] parameters);
member this.ExecuteQuery : Type * string * obj[] -> System.Collections.IEnumerable
Public Function ExecuteQuery (elementType As Type, query As String, ParamArray parameters As Object()) As IEnumerable

Parameter

elementType
Type

Jenis yang IEnumerable<T> akan dikembalikan.

Algoritma untuk mencocokkan kolom dalam hasil kueri ke bidang atau properti dalam objek berfungsi sebagai berikut:

Jika bidang atau properti dipetakan ke nama kolom tertentu, nama kolom tersebut diharapkan dalam hasil.

Jika bidang atau properti tidak dipetakan, kolom dengan nama yang sama dengan bidang atau properti diharapkan dalam resultset.

Perbandingan dilakukan dengan mencari kecocokan peka huruf besar/kecil terlebih dahulu. Jika kecocokan ini tidak ditemukan, pencarian berikutnya terjadi untuk kecocokan yang tidak peka huruf besar/kecil.

Kueri harus mengembalikan semua bidang dan properti objek yang dilacak (kecuali yang dimuat berdasarkan penangguhan) ketika semua kondisi berikut ini benar:

T adalah entitas yang secara eksplisit dilacak oleh DataContext.

ObjectTrackingEnabledadalah true.

Entitas memiliki kunci primer.

Jika tidak, pengecualian akan dilemparkan.

query
String

Kueri SQL yang akan dijalankan.

parameters
Object[]

Array parameter yang akan diteruskan ke perintah . Perhatikan perilaku berikut:

Jika jumlah objek dalam array kurang dari angka tertinggi yang diidentifikasi dalam string perintah, pengecualian akan dilemparkan.

Jika array berisi objek yang tidak direferensikan dalam string perintah, tidak ada pengecualian yang dilemparkan.

Jika parameter adalah null, parameter dikonversi ke DBNull.Value.

Mengembalikan

Kumpulan IEnumerable<T> objek yang dikembalikan oleh kueri.

Berlaku untuk

ExecuteQuery<TResult>(String, Object[])

Menjalankan kueri SQL langsung pada database dan mengembalikan objek.

public:
generic <typename TResult>
 System::Collections::Generic::IEnumerable<TResult> ^ ExecuteQuery(System::String ^ query, ... cli::array <System::Object ^> ^ parameters);
public System.Collections.Generic.IEnumerable<TResult> ExecuteQuery<TResult> (string query, params object[] parameters);
member this.ExecuteQuery : string * obj[] -> seq<'Result>
Public Function ExecuteQuery(Of TResult) (query As String, ParamArray parameters As Object()) As IEnumerable(Of TResult)

Jenis parameter

TResult

Jenis elemen dalam koleksi yang dikembalikan.

Parameter

query
String

Kueri SQL yang akan dijalankan.

parameters
Object[]

Array parameter yang akan diteruskan ke perintah . Perhatikan perilaku berikut:

Jika jumlah objek dalam array kurang dari angka tertinggi yang diidentifikasi dalam string perintah, pengecualian akan dilemparkan.

Jika array berisi objek yang tidak direferensikan dalam string perintah, tidak ada pengecualian yang dilemparkan.

Jika parameter null, parameter akan dikonversi ke DBNull.Value.

Mengembalikan

IEnumerable<TResult>

Kumpulan objek yang dikembalikan oleh kueri.

Contoh

Contoh berikut menunjukkan satu penggunaan untuk metode ini:

var customers = db.ExecuteQuery<Customer>(@"SELECT CustomerID, CompanyName, ContactName, ContactTitle,
   Address, City, Region, PostalCode, Country, Phone, Fax  
   FROM   dbo.Customers
   WHERE  City = {0}", "London");

foreach (Customer c in customers)
    Console.WriteLine(c.ContactName);
Dim customers = db.ExecuteQuery(Of Customer)("SELECT CustomerID, _    
    CompanyName, ContactName, ContactTitle, _
   Address, City, Region, PostalCode, Country, Phone, Fax _
   FROM dbo.Customers _
WHERE City = {0}", "London")

For Each c As Customer In customers
    Console.WriteLine(c.ContactName)
Next

Keterangan

Metode ini adalah mekanisme pass-through untuk kasus di mana LINQ ke SQL tidak menyediakan skenario tertentu.

Algoritma untuk mencocokkan kolom dalam hasil kueri ke bidang dan properti dalam objek berfungsi sebagai berikut:

  • Jika bidang atau properti dipetakan ke nama kolom tertentu, nama kolom tersebut diharapkan dalam hasil.

  • Jika bidang atau properti tidak dipetakan, kolom dengan nama yang sama dengan bidang atau properti diharapkan dalam resultset.

  • Perbandingan dilakukan dengan terlebih dahulu mencari kecocokan peka huruf besar/kecil. Jika kecocokan seperti itu tidak ditemukan, pencarian berikutnya terjadi untuk kecocokan yang tidak peka huruf besar/kecil.

  • Kueri harus mengembalikan semua bidang dan properti objek yang dilacak (selain yang tunduk pada pemuatan yang ditangguhkan) ketika semua hal berikut ini benar:

    • Jika <T> adalah entitas yang secara eksplisit dilacak oleh DataContext.

    • ObjectTrackingEnabled adalah benar.

    • Entitas memiliki kunci primer.

    Jika tidak, pengecualian akan dilemparkan.

  • Dalam semua kasus lain, kueri hanya dapat mengambil subkumpulan bidang dan properti yang dilacak untuk objek tersebut.

Berlaku untuk