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