DataContext.ExecuteQuery Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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.