다음을 통해 공유


DataContext.ExecuteQuery 메서드

정의

오버로드

ExecuteQuery(Type, String, Object[])

데이터베이스에 대해 직접 SQL 쿼리를 실행합니다.

ExecuteQuery<TResult>(String, Object[])

데이터베이스에 대해 직접 SQL 쿼리를 실행하고 개체를 반환합니다.

ExecuteQuery(Type, String, Object[])

데이터베이스에 대해 직접 SQL 쿼리를 실행합니다.

public:
 System::Collections::IEnumerable ^ ExecuteQuery(Type ^ elementType, System::String ^ query, ... cli::array <System::Object ^> ^ parameters);
public System.Collections.IEnumerable ExecuteQuery (Type elementType, string query, params object[] parameters);
member this.ExecuteQuery : Type * string * obj[] -> System.Collections.IEnumerable
Public Function ExecuteQuery (elementType As Type, query As String, ParamArray parameters As Object()) As IEnumerable

매개 변수

elementType
Type

반환될 IEnumerable<T>의 형식입니다.

쿼리 결과의 열을 개체의 필드 또는 속성과 일치시키는 알고리즘은 다음과 같이 작동합니다.

필드 또는 속성이 특정 열 이름에 매핑된 경우 해당 열 이름이 결과 집합에 있어야 합니다.

필드 또는 속성이 매핑되지 않은 경우 필드 또는 속성과 이름이 같은 열이 결과 집합에 있어야 합니다.

우선 대/소문자를 구분하여 비교합니다. 일치 항목이 없으면 대/소문자를 구분하지 않고 다시 검색합니다.

다음 조건에 모두 해당하는 경우 쿼리는 지연 로드가 적용되는 항목과 별도로 개체의 모든 추적된 필드 및 속성을 반환해야 합니다.

T 는 에서 명시적으로 추적하는 엔터티입니다 DataContext.

ObjectTrackingEnabled이(가) true인 경우

엔터티에 기본 키가 있습니다.

그렇지 않으면 예외가 throw됩니다.

query
String

실행할 SQL 쿼리입니다.

parameters
Object[]

명령에 전달할 매개 변수 배열입니다. 다음 동작에 유의하십시오.

배열의 개체 수가 명령 문자열에 지정된 최대 개수보다 작으면 예외가 throw됩니다.

명령 문자열에서 참조되지 않은 개체가 배열에 있는 경우에는 예외가 throw되지 않습니다.

null인 매개 변수는 DBNull.Value로 변환됩니다.

반환

쿼리에서 반환된 개체의 IEnumerable<T> 컬렉션입니다.

적용 대상

ExecuteQuery<TResult>(String, Object[])

데이터베이스에 대해 직접 SQL 쿼리를 실행하고 개체를 반환합니다.

public:
generic <typename TResult>
 System::Collections::Generic::IEnumerable<TResult> ^ ExecuteQuery(System::String ^ query, ... cli::array <System::Object ^> ^ parameters);
public System.Collections.Generic.IEnumerable<TResult> ExecuteQuery<TResult> (string query, params object[] parameters);
member this.ExecuteQuery : string * obj[] -> seq<'Result>
Public Function ExecuteQuery(Of TResult) (query As String, ParamArray parameters As Object()) As IEnumerable(Of TResult)

형식 매개 변수

TResult

반환되는 컬렉션에 있는 요소의 형식입니다.

매개 변수

query
String

실행할 SQL 쿼리입니다.

parameters
Object[]

명령에 전달할 매개 변수 배열입니다. 다음 동작에 유의하십시오.

배열의 개체 수가 명령 문자열에 지정된 최대 개수보다 작으면 예외가 throw됩니다.

명령 문자열에서 참조되지 않은 개체가 배열에 있는 경우에는 예외가 throw되지 않습니다.

null인 매개 변수는 DBNull.Value로 변환됩니다.

반환

IEnumerable<TResult>

쿼리에서 반환된 개체의 컬렉션입니다.

예제

다음 예제에서는 이 메서드에 대해 한 가지 용도를 보여 있습니다.

var customers = db.ExecuteQuery<Customer>(@"SELECT CustomerID, CompanyName, ContactName, ContactTitle,
   Address, City, Region, PostalCode, Country, Phone, Fax  
   FROM   dbo.Customers
   WHERE  City = {0}", "London");

foreach (Customer c in customers)
    Console.WriteLine(c.ContactName);
Dim customers = db.ExecuteQuery(Of Customer)("SELECT CustomerID, _    
    CompanyName, ContactName, ContactTitle, _
   Address, City, Region, PostalCode, Country, Phone, Fax _
   FROM dbo.Customers _
WHERE City = {0}", "London")

For Each c As Customer In customers
    Console.WriteLine(c.ContactName)
Next

설명

이 메서드는 LINQ to SQL 특정 시나리오에 대해 제공하지 않는 경우를 위한 통과 메커니즘입니다.

쿼리 결과의 열을 개체의 필드 및 속성과 일치시키는 알고리즘은 다음과 같이 작동합니다.

  • 필드 또는 속성이 특정 열 이름에 매핑된 경우 해당 열 이름이 결과 집합에 있어야 합니다.

  • 필드 또는 속성이 매핑되지 않은 경우 필드 또는 속성과 이름이 같은 열이 결과 집합에 있어야 합니다.

  • 비교는 먼저 대/소문자를 구분하는 일치 항목을 찾아서 수행됩니다. 이러한 일치 항목을 찾을 수 없는 경우 대/소문자를 구분하지 않는 일치 항목에 대한 후속 검색이 발생합니다.

  • 쿼리는 다음이 모두 true인 경우 개체의 추적된 모든 필드와 속성을 반환해야 합니다(지연된 로드의 주체 제외).

    • 가 에 의해 명시적으로 추적되는 엔터티이면 <T> 입니다 DataContext.

    • ObjectTrackingEnabled는 true입니다.

    • 엔터티에 기본 키가 있습니다.

    그렇지 않으면 예외가 throw됩니다.

  • 다른 모든 경우에서 쿼리는 개체에 대해 추적된 필드 및 속성의 하위 집합만 검색할 수 있습니다.

적용 대상