Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ett lokalt metodanrop är ett som körs i objektmodellen. Ett fjärrmetodanrop är ett som LINQ till SQL översätter till SQL och skickar till databasmotorn för körning. Lokala metodanrop behövs när LINQ till SQL inte kan översätta anropet till SQL. Annars utlöses en InvalidOperationException.
Exempel 1
I följande exempel mappas en Order klass till tabellen Beställningar i Northwind-exempeldatabasen. En lokal instansmetod har lagts till i klassen.
I fråga 1 körs konstruktorn för Order klassen lokalt. Om LINQ till SQL försökte översätta LocalInstanceMethod()till SQL i fråga 2 misslyckas försöket och ett InvalidOperationException undantag utlöses. Men eftersom LINQ till SQL har stöd för lokala metodanrop utlöser Query2 inget undantag.
// 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