DataContext.ExecuteQuery Método

Definição

Sobrecargas

Name Description
ExecuteQuery(Type, String, Object[])

Executa consultas SQL diretamente na base de dados.

ExecuteQuery<TResult>(String, Object[])

Executa consultas SQL diretamente na base de dados e devolve objetos.

ExecuteQuery(Type, String, Object[])

Executa consultas SQL diretamente na base 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 do IEnumerable<T> que deve ser devolvido.

O algoritmo para associar colunas no resultado da consulta a campos ou propriedades no objeto funciona da seguinte forma:

Se um campo ou propriedade for mapeado para um nome de coluna específico, esse nome de coluna é esperado no conjunto de resultados.

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

A comparação é feita procurando primeiro uma correspondência sensível a maiúsculas e maiúsculas. Se esta correspondência não for encontrada, ocorre uma pesquisa subsequente por uma correspondência insensível a maiúsculas e minúsculas.

A consulta deve devolver todos os campos e propriedades rastreados do objeto (exceto aqueles que são carregados em regime diferido) quando todas as seguintes condições são verdadeiras:

T é uma entidade explicitamente acompanhada pelo DataContext.

ObjectTrackingEnabled é true.

A entidade tem uma chave primária.

Caso contrário, é lançada uma exceção.

query
String

A consulta SQL a ser executada.

parameters
Object[]

O array de parâmetros a passar ao comando. Tenha em atenção o seguinte comportamento:

Se o número de objetos no array for inferior ao número mais alto identificado na cadeia de comandos, é lançada uma exceção.

Se o array contiver objetos que não estão referenciados na cadeia de comandos, não é lançada nenhuma exceção.

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

Devoluções

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

Aplica-se a

ExecuteQuery<TResult>(String, Object[])

Executa consultas SQL diretamente na base de dados e devolve 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 Genérico

TResult

O tipo dos elementos na coleção devolvida.

Parâmetros

query
String

A consulta SQL a ser executada.

parameters
Object[]

O array de parâmetros a passar ao comando. Tenha em atenção o seguinte comportamento:

Se o número de objetos no array for inferior ao número mais alto identificado na cadeia de comandos, é lançada uma exceção.

Se o array contiver objetos que não estão referenciados na cadeia de comandos, não é lançada nenhuma exceção.

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

Devoluções

IEnumerable<TResult>

Uma coleção de objetos devolvidos pela consulta.

Exemplos

O exemplo seguinte mostra uma utilização deste 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

Observações

Este método é um mecanismo de passagem para casos em que o LINQ para SQL não prevê um cenário específico.

O algoritmo para corresponder colunas no resultado da consulta a campos e propriedades no objeto funciona da seguinte forma:

  • Se um campo ou propriedade for mapeado para um nome de coluna específico, esse nome de coluna é esperado no conjunto de resultados.

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

  • A comparação é feita procurando primeiro uma correspondência sensível a maiúsculas minúsculas. Se tal correspondência não for encontrada, ocorre uma busca subsequente por uma correspondência insensível a maiúsculas e minúsculas.

  • A consulta deve devolver todos os campos e propriedades rastreados do objeto (exceto aqueles sujeitos a carregamento diferido) quando todas as seguintes são verdadeiras:

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

    • ObjectTrackingEnabled é verdade.

    • A entidade tem uma chave primária.

    Caso contrário, é lançada uma exceção.

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

Aplica-se a