Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Вызов локального метода — это тот, который выполняется в объектной модели. Вызов удаленного метода — это вызов, который LINQ to SQL преобразуется в SQL и передается в ядро СУБД для выполнения. Вызовы локальных методов необходимы, если LINQ to SQL не может перевести вызов в SQL. В противном случае выбрасывается InvalidOperationException.
Пример 1
В следующем примере класс Order сопоставляется с таблицей Orders в образце базы данных Northwind. В класс добавлен метод локального экземпляра.
В запросе 1 конструктор класса Order выполняется локально. В запросе 2, если LINQ to SQL пытался преобразовать LocalInstanceMethod() в SQL, попытка завершится ошибкой InvalidOperationException, и будет выдано исключение. Но поскольку LINQ to SQL обеспечивает поддержку локальных вызовов методов, Query2 не будет вызывать исключение.
// 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