Compartir vía


DataContext.ExecuteQuery Método

Definición

Sobrecargas

ExecuteQuery(Type, String, Object[])

Ejecuta las consultas SQL directamente en la base de datos.

ExecuteQuery<TResult>(String, Object[])

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

ExecuteQuery(Type, String, Object[])

Ejecuta las 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 de IEnumerable<T> que se va a devolver.

El algoritmo para hacer coincidir las columnas en el resultado de la consulta con los campos o propiedades en el objeto funciona de la siguiente manera:

Si una propiedad o un campo está asignado a un nombre de columna concreto, se espera ese nombre de columna en el conjunto de resultados.

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

La comparación se realiza buscando primero una coincidencia con distinción entre mayúsculas y minúsculas. Si no se encuentra ninguna coincidencia de este tipo, se buscará una coincidencia sin distinción entre mayúsculas y minúsculas.

La consulta debe devolver todos los campos y propiedades del objeto de los que se ha realizado un seguimiento (excepto los que se cargan de manera aplazada) cuando se cumplen todas las condiciones siguientes:

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.

query
String

Consulta SQL que se va a ejecutar.

parameters
Object[]

Matriz de parámetros que se va a pasar 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 los objetos devueltos por la consulta.

Se aplica a

ExecuteQuery<TResult>(String, Object[])

Ejecuta las 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 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 va a pasar 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 columnas coincidentes en el resultado de la consulta en campos y propiedades del objeto funciona de la siguiente manera:

  • Si una propiedad o un campo está asignado a un nombre de columna concreto, se espera ese nombre de columna en el conjunto de resultados.

  • Si una propiedad o un campo no está asignado, se espera una columna con el mismo nombre que la propiedad o el campo 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