Bagikan melalui


Panggilan Metode Lokal

Panggilan metode lokal adalah panggilan yang dijalankan dalam model objek. Panggilan metode remote adalah panggilan yang diubah oleh LINQ ke SQL menjadi SQL dan dikirimkan ke mesin basis data untuk dieksekusi. Panggilan metode lokal diperlukan ketika LINQ ke SQL tidak dapat menerjemahkan panggilan ke SQL. Jika tidak, maka akan menghasilkan kesalahan InvalidOperationException.

Contoh 1

Dalam contoh berikut, sebuah kelas Order dipetakan ke tabel dalam database sampel Northwind, yaitu tabel Pesanan. Sebuah metode instans lokal telah ditambahkan ke dalam kelas.

Di Kueri 1, konstruktor untuk Order kelas dijalankan secara lokal. Dalam Kueri 2, jika LINQ ke SQL mencoba menerjemahkan LocalInstanceMethod() ke dalam kalimat SQL, upaya tersebut akan gagal dan pengecualian InvalidOperationException akan terjadi. Tetapi karena LINQ ke SQL menyediakan dukungan untuk panggilan metode lokal, Query2 tidak akan memberikan 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

Lihat juga