Panggilan Metode Lokal
Panggilan metode lokal adalah salah satu yang dieksekusi dalam model objek. Panggilan metode jarak jauh adalah panggilan yang diterjemahkan oleh LINQ ke SQL dan dikirimkan ke mesin database untuk dieksekusi. Panggilan metode lokal diperlukan ketika LINQ ke SQL tidak dapat menerjemahkan panggilan ke SQL. Jika tidak, InvalidOperationException akan muncul.
Contoh 1
Dalam contoh berikut, kelas Order
dipetakan ke tabel Pesanan di database sampel Northwind. Metode instans lokal telah ditambahkan ke kelas.
Dalam Kueri 1, konstruktor untuk kelas Order
dijalankan secara lokal. Dalam Kueri 2, jika LINQ ke SQL mencoba menerjemahkan LocalInstanceMethod()
ke SQL, upaya tersebut akan gagal dan pengecualian InvalidOperationException akan muncul. Tetapi karena LINQ ke SQL menyediakan dukungan untuk pemanggilan metode lokal, Query2 tidak akan mengeluarkan pengecualian.
// Query 1.
var q1 =
from ord in db.Orders
where ord.EmployeeID == 9
select ord;
foreach (var ordObj in q1)
{
Console.WriteLine("{0}, {1}", ordObj.OrderID,
ordObj.ShipVia.Value);
}
' Query 1.
Dim q0 = _
From ord In db.Orders _
Where ord.EmployeeID = 9 _
Select ord
For Each ordObj In q0
Console.WriteLine("{0}, {1}", ordObj.OrderID, _
ordObj.ShipVia.Value)
Next
// Query 2.
public int LocalInstanceMethod(int x)
{
return x + 1;
}
void q2()
{
var q2 =
from ord in db.Orders
where ord.EmployeeID == 9
select new
{
member0 = ord.OrderID,
member1 = ord.LocalInstanceMethod(ord.ShipVia.Value)
};
}
' Query 2.
Public Function LocalInstanceMethod(ByVal x As Integer) As Integer
Return x + 1
End Function
Sub q2()
Dim db As New Northwnd("")
Dim q2 = _
From ord In db.Orders _
Where ord.EmployeeID = 9 _
Select member0 = ord.OrderID, member1 = ord.LocalInstanceMethod(ord.ShipVia.Value)
End Sub