Aracılığıyla paylaş


Yerel Yöntem Çağrıları

Yerel yöntem çağrısı, nesne modeli içinde yürütülen bir çağrıdır. Uzak yöntem çağrısı, LINQ to SQL'in SQL'e çevirdiği ve yürütülmek üzere veritabanı altyapısına ilettiği çağrıdır. LINQ to SQL çağrısını SQL'e çeviremediğinde yerel yöntem çağrıları gereklidir. Aksi takdirde, bir InvalidOperationException oluşturulur.

Örnek 1

Aşağıdaki örnekte, bir Order sınıf Northwind örnek veritabanındaki Orders tablosuna eşlenir. Sınıfına yerel bir örnek yöntemi eklendi.

Sorgu 1'de, sınıfın Order oluşturucu yerel olarak yürütülür. Sorgu 2'de LINQ to SQL, SQL'e çevirmeye LocalInstanceMethod()çalışırsa, deneme başarısız olur ve bir InvalidOperationException özel durum oluşturulur. Ancak LINQ to SQL yerel yöntem çağrıları için destek sağladığından, Query2 özel durum oluşturmaz.

// 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

Ayrıca bkz.