Bagikan melalui


Cara: Menjalankan Kueri SQL Secara Langsung

LINQ ke SQL menerjemahkan kueri yang Anda tulis ke dalam kueri SQL berparameter (dalam bentuk teks) dan mengirimkannya ke server SQL untuk diproses.

SQL tidak dapat menjalankan berbagai metode yang mungkin tersedia secara lokal untuk aplikasi Anda. LINQ ke SQL mencoba mengonversi metode lokal ini menjadi operasi dan fungsi yang setara yang tersedia di dalam lingkungan SQL. Sebagian besar metode dan operator pada jenis bawaan .NET Framework memiliki terjemahan langsung ke perintah SQL. Beberapa dapat diproduksi dari fungsi yang tersedia. Mereka yang tidak dapat diproduksi menghasilkan pengecualian run-time. Untuk informasi selengkapnya, harap lihat Pemetaan Jenis SQL-CLR.

Dalam kasus di mana LINQ untuk SQL kueri tidak cukup untuk tugas khusus, Anda bisa menggunakan metode ExecuteQuery untuk menjalankan kueri SQL, lalu mengonversi hasil kueri Anda langsung menjadi objek.

Contoh 1

Dalam contoh berikut, asumsikan bahwa data untuk kelas Customer tersebar di dua tabel (customer1 dan customer2). Kueri mengembalikan urutan objek Customer.

Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
(@"SELECT c1.custid as CustomerID, c2.custName as ContactName
    FROM customer1 as c1, customer2 as c2
    WHERE c1.custid = c2.custid"
);
Dim db As New Northwnd("c:\northwnd.mdf")
Dim results As IEnumerable(Of Customer) = _
    db.ExecuteQuery(Of Customer) _
    ("SELECT c1.custID as CustomerID," & _
    "c2.custName as ContactName" & _
    "FROM customer1 AS c1, customer2 as c2" & _
    "WHERE c1.custid = c2.custid")

Selama nama kolom dalam hasil tabular cocok dengan properti kolom kelas entitas Anda, LINQ untuk SQL membuat objek Anda dari kueri SQL apa pun.

Contoh 2

Metode ExecuteQuery ini juga memungkinkan parameter. Gunakan kode seperti berikut ini untuk menjalankan kueri berparameter.

Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
    ("SELECT contactname FROM customers WHERE city = {0}",
    "London");
    Dim db As New Northwnd("c:\northwnd.mdf")
    Dim results As IEnumerable(Of Customer) = _
db.ExecuteQuery(Of Customer) _
("SELECT contactname FROM customers WHERE city = {0}, 'London'")

Parameter dinyatakan dalam teks kueri dengan menggunakan notasi keriting yang sama yang digunakan oleh Console.WriteLine() dan String.Format(). Bahkan, String.Format() sebenarnya dipanggil pada string kueri yang Anda berikan, mengganti parameter kurung kurawal dengan nama parameter yang dihasilkan seperti @p0, @p1 ..., @p(n).

Lihat juga