Bagikan melalui


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

Lihat juga