Compartilhar via


DataContext.ExecuteQuery Método

Definição

Sobrecargas

ExecuteQuery(Type, String, Object[])

Executa consultas SQL diretamente no banco de dados.

ExecuteQuery<TResult>(String, Object[])

Executa consultas SQL diretamente no banco de dados e retorna objetos.

ExecuteQuery(Type, String, Object[])

Executa consultas SQL diretamente no banco de dados.

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

Parâmetros

elementType
Type

O tipo dos IEnumerable<T> a serem retornados.

O algoritmo para colunas correspondentes nos resultados da consulta para campos ou propriedades no objeto funciona da seguinte maneira:

Se um campo ou propriedade é mapeado para um nome de coluna em particular, o nome dessa coluna é esperado no conjunto de resultados.

Se um campo ou propriedade não for mapeado, uma coluna com o mesmo nome do campo ou propriedade é esperada no conjunto de resultados.

A comparação é realizada procurando, primeiro, uma correspondência que diferencia maiúsculas de minúsculas. Se essa correspondência não for encontrada, uma pesquisa subsequente ocorre para uma correspondência que diferencia maiúsculas de minúsculas.

A consulta deve retornar todos os campos rastreados e propriedades do objeto (exceto aqueles que são carregados de forma adiada) quando todas as seguintes condições forem verdadeiras:

T é uma entidade explicitamente controlada por DataContext.

ObjectTrackingEnabled é true.

A entidade tem uma chave primária.

Do contrário, uma exceção será acionada.

query
String

A consulta SQL a ser executada.

parameters
Object[]

A matriz de parâmetros a serem passados para o comando. Observe o seguinte comportamento:

Se o número de objetos na matriz for menor que o maior número identificado na cadeia de caracteres de comando, uma exceção será gerada.

Se a matriz contiver objetos que não são referenciados na cadeia de caracteres de comando, nenhuma exceção será gerada.

Se um parâmetro for null, ele será convertido em DBNull.Value.

Retornos

Uma coleção de objetos IEnumerable<T> retornada pela consulta.

Aplica-se a

ExecuteQuery<TResult>(String, Object[])

Executa consultas SQL diretamente no banco de dados e retorna objetos.

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)

Parâmetros de tipo

TResult

O tipo dos elementos na coleção retornada.

Parâmetros

query
String

A consulta SQL a ser executada.

parameters
Object[]

A matriz de parâmetros a serem passados para o comando. Observe o seguinte comportamento:

Se o número de objetos na matriz for menor que o maior número identificado na cadeia de caracteres de comando, uma exceção será gerada.

Se a matriz contiver objetos que não são referenciados na cadeia de caracteres de comando, nenhuma exceção será gerada.

Se um parâmetro for nulo, ele será convertido em DBNull.Value.

Retornos

IEnumerable<TResult>

Uma coleção de objetos retornada pela consulta.

Exemplos

O exemplo a seguir mostra um uso para este método:

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

Comentários

Esse método é um mecanismo de passagem para casos em que LINQ to SQL não fornece um cenário específico.

O algoritmo para correspondência de colunas no resultado da consulta para campos e propriedades no objeto funciona da seguinte maneira:

  • Se um campo ou propriedade é mapeado para um nome de coluna em particular, o nome dessa coluna é esperado no conjunto de resultados.

  • Se um campo ou propriedade não for mapeado, uma coluna com o mesmo nome do campo ou propriedade é esperada no conjunto de resultados.

  • A comparação é executada primeiro procurando uma correspondência que diferencia maiúsculas de minúsculas. Se essa correspondência não for encontrada, ocorrerá uma pesquisa subsequente para uma correspondência que não diferencia maiúsculas de minúsculas.

  • A consulta deve retornar todos os campos e propriedades rastreados do objeto (além daqueles sujeitos ao carregamento adiado) quando todos os seguintes forem verdadeiros:

    • Se <T> for uma entidade controlada explicitamente pelo DataContext.

    • ObjectTrackingEnabled é true.

    • A entidade tem uma chave primária.

    Do contrário, uma exceção será acionada.

  • Em todos os outros casos, a consulta pode recuperar apenas um subconjunto dos campos e propriedades rastreados para o objeto.

Aplica-se a