Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein lokaler Methodenaufruf ist ein Aufruf, der innerhalb des Objektmodells ausgeführt wird. Ein Remotemethodenaufruf ist ein Aufruf, den LINQ to SQL in SQL übersetzt und zur Ausführung an die Datenbank-Engine überträgt. Lokale Methodenaufrufe sind erforderlich, wenn LINQ to SQL den Aufruf nicht in SQL übersetzen kann. Andernfalls wird InvalidOperationException ausgelöst.
Beispiel 1
Im folgenden Beispiel wird eine Order
Klasse der Tabelle "Orders" in der Northwind-Beispieldatenbank zugeordnet. Der Klasse wurde eine lokale Instanzmethode hinzugefügt.
In Abfrage 1 wird der Konstruktor für die Order
Klasse lokal ausgeführt. Wenn LINQ to SQL in Abfrage 2 versucht hat, in SQL zu übersetzen LocalInstanceMethod()
, schlägt der Versuch fehl, und eine InvalidOperationException Ausnahme würde ausgelöst. Da LINQ to SQL jedoch Unterstützung für lokale Methodenaufrufe bereitstellt, löst Query2 keine Ausnahme aus.
// 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