DataContext.ExecuteQuery Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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.