Partager via


DataContext.ExecuteQuery Méthode

Définition

Surcharges

ExecuteQuery(Type, String, Object[])

Exécute des requêtes SQL directement sur la base de données.

ExecuteQuery<TResult>(String, Object[])

Exécute des requêtes SQL directement sur la base de données et retourne des objets.

ExecuteQuery(Type, String, Object[])

Exécute des requêtes SQL directement sur la base de données.

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

Paramètres

elementType
Type

Type de IEnumerable<T> à retourner.

L'algorithme qui fait correspondre les colonnes du résultat de la requête aux champs ou aux propriétés de l'objet fonctionne comme suit :

Si un champ ou une propriété est mappé à un nom de colonne particulier, ce nom de colonne est attendu dans le jeu de résultats.

Si un champ ou une propriété n'est pas mappé, une colonne de même nom que le champ ou la propriété est attendue dans le jeu de résultats.

la comparaison est effectuée en recherchant en premier une correspondance sensible à la casse. Si cette correspondance est introuvable, une recherche ultérieure est effectuée pour une correspondance qui ne tient pas compte de la casse.

La requête doit retourner tous les champs et propriétés de l'objet pour lesquels un suivi est effectué (excepté ceux qui sont chargés sur une base différée) lorsque toutes les conditions suivantes sont réalisées :

Test une entité suivie explicitement par .DataContext

ObjectTrackingEnabled a la valeur true.

L'entité a une clé primaire.

Sinon, une exception est levée.

query
String

Requête SQL à exécuter.

parameters
Object[]

Tableau de paramètres à passer à la commande. Notez le comportement suivant :

Si le nombre d'objets dans le tableau est inférieur au nombre le plus élevé identifié dans la chaîne de commande, une exception est levée.

Si le tableau contient des objets qui ne sont pas référencés dans la chaîne de commande, aucune exception n'est levée.

Si un paramètre est null, il est converti en DBNull.Value.

Retours

Collection IEnumerable<T> d'objets retournés par la requête.

S’applique à

ExecuteQuery<TResult>(String, Object[])

Exécute des requêtes SQL directement sur la base de données et retourne des objets.

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)

Paramètres de type

TResult

Type des éléments de la collection retournée.

Paramètres

query
String

Requête SQL à exécuter.

parameters
Object[]

Tableau de paramètres à passer à la commande. Notez le comportement suivant :

Si le nombre d'objets dans le tableau est inférieur au nombre le plus élevé identifié dans la chaîne de commande, une exception est levée.

Si le tableau contient des objets qui ne sont pas référencés dans la chaîne de commande, aucune exception n'est levée.

Si un paramètre est null, il est converti en DBNull.Value.

Retours

IEnumerable<TResult>

Collection d'objets retournés par la requête.

Exemples

L’exemple suivant montre une utilisation pour cette méthode :

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

Remarques

Cette méthode est un mécanisme de transmission pour les cas où LINQ to SQL ne fournit pas de scénario particulier.

L’algorithme permettant de mettre en correspondance les colonnes du résultat de la requête aux champs et propriétés de l’objet fonctionne comme suit :

  • Si un champ ou une propriété est mappé à un nom de colonne particulier, ce nom de colonne est attendu dans le jeu de résultats.

  • Si un champ ou une propriété n'est pas mappé, une colonne de même nom que le champ ou la propriété est attendue dans le jeu de résultats.

  • La comparaison est effectuée en recherchant d’abord une correspondance respectant la casse. Si une telle correspondance n’est pas trouvée, une recherche ultérieure est effectuée pour une correspondance qui ne respecte pas la casse.

  • La requête doit retourner tous les champs et propriétés suivis de l’objet (à l’exception de ceux soumis à un chargement différé) lorsque toutes les conditions suivantes sont remplies :

    • If <T> est une entité explicitement suivie par .DataContext

    • ObjectTrackingEnabled a la valeur true.

    • L'entité a une clé primaire.

    Sinon, une exception est levée.

  • Dans tous les autres cas, la requête peut récupérer uniquement un sous-ensemble des champs suivis et des propriétés de l’objet.

S’applique à