Share via


방법: SQL 쿼리 직접 실행(LINQ to SQL)

업데이트: November 2007

LINQ to SQL을 작성한 쿼리를 텍스트 형식의 매개 변수가 있는 SQL 쿼리로 변환하고 SQL 서버에 전달하여 처리합니다.

SQL에서는 응용 프로그램에서 로컬로 사용할 수 있는 다양한 메서드를 실행할 수 없습니다. LINQ to SQL에서 이 로컬 메서드를 해당 작업과 SQL 환경 내부에서 사용 가능한 함수로 변환하려 합니다. .NET Framework 기본 제공 형식에서 대부분의 메서드와 연산자는 SQL 명령으로 직접 변환됩니다. 일부는 사용할 수 있는 함수에서 생성될 수 있습니다. 생성될 수 없는 일부는 런타임 예외를 발생시킵니다. 자세한 내용은 SQL-CLR 형식 매핑(LINQ to SQL)을 참조하십시오.

LINQ to SQL 쿼리가 부족하여 특수한 작업을 수행할 수 없는 경우 ExecuteQuery 메서드를 사용하여 SQL 쿼리를 실행하고 쿼리의 결과를 직접 개체로 변환합니다.

예제

다음 예제에서는 Customer 클래스의 데이터가 두 개의 테이블(customer1 및 customer2)에 나누어져 있다고 가정합니다. 쿼리는 Customer 개체의 시퀀스를 반환합니다.

Dim db As New Northwnd("c:\northwnd.mdf")
Dim results As IEnumerable(Of Customer) = _
    db.ExecuteQuery(Of Customer) _
    ("SELECT c1.custID as CustomerID," & _
    "c2.custName as ContactName" & _
    "FROM customer1 AS c1, customer2 as c2" & _
    "WHERE c1.custid = c2.custid")
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
(@"SELECT c1.custid as CustomerID, c2.custName as ContactName
    FROM customer1 as c1, customer2 as c2
    WHERE c1.custid = c2.custid"
);

표 형식 결과의 열 이름이 엔터티 클래스의 열 속성과 일치할 경우 LINQ to SQL은 모든 SQL 쿼리에서 개체를 만듭니다.

또한 ExecuteQuery 메서드는 매개 변수를 허용합니다. 다음의 코드를 사용하여 매개 변수가 있는 쿼리를 실행합니다.

    Dim db As New Northwnd("c:\northwnd.mdf")
    Dim results As IEnumerable(Of Customer) = _
db.ExecuteQuery(Of Customer) _
("SELECT contactname FROM customers WHERE city = {0}, 'London'")
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
    ("SELECT contactname FROM customers WHERE city = {0}",
    "London");

매개 변수는 Console.WriteLine() 및 String.Format()에서 사용되는 동일한 중괄호 표기법을 사용하여 쿼리 텍스트에서 표현됩니다. 즉 String.Format()은 제공된 쿼리 문자열에 대해 실제로 호출되어 중괄호로 묶인 매개 변수를 @p0, @p1 …, @p(n) 등과 같은 생성된 매개 변수 이름으로 대체합니다.

참고 항목

기타 리소스

배경 정보(LINQ to SQL)

데이터베이스 쿼리(LINQ to SQL)