방법: 사용자 정의 함수 인라인 호출
사용자 정의 함수를 인라인으로 호출할 수 있지만 실행이 지연된 쿼리에 포함된 함수는 쿼리가 실행될 때까지 실행되지 않습니다. 자세한 내용은 LINQ 쿼리 소개(C#)를 참조하세요.
쿼리 외부에 있는 동일한 함수를 호출할 경우 LINQ to SQL에서는 메서드 호출 식에서 단순한 쿼리를 만듭니다. 다음은 전달된 상수에 매개 변수 @p0
가 바인딩되는 SQL 구문입니다.
SELECT dbo.ReverseCustName(@p0)
LINQ to SQL은 다음을 만듭니다.
string str = db.ReverseCustName("LINQ to SQL");
Dim str As String = db.ReverseCustName("LINQ to SQL")
예시
다음 LINQ to SQL 쿼리에서 생성된 사용자 정의 함수 메서드 ReverseCustName
에 대한 인라인 호출을 볼 수 있습니다. 쿼리 실행이 지연되었기에 함수는 즉시 실행되지 않습니다. 이 쿼리에 대해 빌드된 SQL은 데이터베이스에서 사용자 정의 함수에 대한 호출로 변환됩니다. 다음 쿼리의 SQL 코드를 참조하세요.
var custQuery =
from cust in db.Customers
select new {cust.ContactName, Title =
db.ReverseCustName(cust.ContactTitle)};
Dim custQuery = _
From cust In db.Customers _
Select cust.ContactName, Title = _
db.ReverseCustName(cust.ContactTitle)
SELECT [t0].[ContactName],
dbo.ReverseCustName([t0].[ContactTitle]) AS [Title]
FROM [Customers] AS [t0]