DataContext.ExecuteQuery Método

Definición

Sobrecargas

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

Ejecuta consultas SQL directamente en la base de datos.

ExecuteQuery<TResult>(String, Object[])

Ejecuta consultas SQL directamente en la base de datos y devuelve objetos.

ExecuteQuery(Type, String, Object[])

Ejecuta consultas SQL directamente en la base de datos.

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

Tipo del objeto IEnumerable<T> que se va a devolver.

El algoritmo para buscar coincidencias de columnas en el resultado de la consulta en campos o propiedades del objeto funciona de la siguiente manera:

Si un campo o propiedad se asigna a un nombre de columna determinado, se espera ese nombre de columna en el conjunto de resultados.

Si no se asigna un campo o una propiedad, se espera una columna con el mismo nombre que el campo o la propiedad en el conjunto de resultados.

La comparación se realiza buscando primero una coincidencia que distingue mayúsculas de minúsculas. Si no se encuentra esta coincidencia, se produce una búsqueda posterior para una coincidencia que no distingue mayúsculas de minúsculas.

La consulta debe devolver todos los campos y propiedades con seguimiento del objeto (excepto los que se cargan de forma diferida) cuando se cumplen todas las condiciones siguientes:

Tes una entidad de la que realiza un seguimiento explícito de .DataContext

ObjectTrackingEnabled es true.

La entidad tiene una clave principal.

De lo contrario, se produce una excepción.

query
String

Consulta SQL que se va a ejecutar.

parameters
Object[]

Matriz de parámetros que se pasarán al comando . Tenga en cuenta el siguiente comportamiento:

Si el número de objetos de la matriz es menor que el número más alto identificado en la cadena de comandos, se produce una excepción.

Si la matriz contiene objetos a los que no se hace referencia en la cadena de comandos, no se produce ninguna excepción.

Si un parámetro es null, se convierte en DBNull.Value.

Devoluciones

Colección IEnumerable<T> de objetos devueltos por la consulta.

Se aplica a

ExecuteQuery<TResult>(String, Object[])

Ejecuta consultas SQL directamente en la base de datos y devuelve 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

Tipo de los elementos de la colección devuelta.

Parámetros

query
String

Consulta SQL que se va a ejecutar.

parameters
Object[]

Matriz de parámetros que se pasarán al comando . Tenga en cuenta el siguiente comportamiento:

Si el número de objetos de la matriz es menor que el número más alto identificado en la cadena de comandos, se produce una excepción.

Si la matriz contiene objetos a los que no se hace referencia en la cadena de comandos, no se produce ninguna excepción.

Si un parámetro es NULL, se convierte en DBNull.Value.

Devoluciones

IEnumerable<TResult>

Colección de objetos devueltos por la consulta.

Ejemplos

En el ejemplo siguiente se muestra un 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

Comentarios

Este método es un mecanismo de paso a través para los casos en los que LINQ to SQL no proporciona un escenario determinado.

El algoritmo para buscar coincidencias de columnas en el resultado de la consulta en campos y propiedades del objeto funciona de la siguiente manera:

  • Si un campo o propiedad se asigna a un nombre de columna determinado, se espera ese nombre de columna en el conjunto de resultados.

  • Si no se asigna un campo o una propiedad, se espera una columna con el mismo nombre que el campo o la propiedad en el conjunto de resultados.

  • La comparación se realiza buscando primero una coincidencia que distingue mayúsculas de minúsculas. Si no se encuentra dicha coincidencia, se produce una búsqueda posterior para una coincidencia que no distingue mayúsculas de minúsculas.

  • La consulta debe devolver todos los campos y propiedades con seguimiento del objeto (aparte de los sujetos a la carga diferida) cuando se cumplen todas las siguientes condiciones:

    • Si <T> es una entidad de la que realiza un seguimiento explícito de .DataContext

    • ObjectTrackingEnabled es true.

    • La entidad tiene una clave principal.

    De lo contrario, se produce una excepción.

  • En todos los demás casos, la consulta puede recuperar solo un subconjunto de los campos y propiedades con seguimiento del objeto.

Se aplica a