DataContext.ExecuteQuery Méthode

Définition

Surcharges

Nom Description
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 la IEnumerable<T> valeur à renvoyer.

L’algorithme de correspondance des colonnes dans le résultat de la requête à des champs ou des 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 portant le 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 sensible à la casse. Si cette correspondance est introuvable, une recherche suivante se produit pour une correspondance sans respect de la casse.

La requête doit retourner tous les champs et propriétés suivis de l’objet (sauf celles chargées sur une base différée) lorsque toutes les conditions suivantes sont remplies :

T est une entité explicitement suivie par le 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 du 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 du 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 a la valeur 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 pass-through pour les cas où LINQ to SQL ne fournit pas de scénario particulier.

L’algorithme de correspondance des colonnes dans le résultat de la requête à des champs et des propriétés dans 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 portant le 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 sensible à la casse. Si une telle correspondance n’est pas trouvée, une recherche suivante se produit pour une correspondance sans respect de la casse.

  • La requête doit retourner tous les champs et propriétés suivis de l’objet (à part celles soumises au chargement différé) lorsque toutes les valeurs suivantes sont vraies :

    • S’il s’agit <T> d’une entité explicitement suivie par le 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 et propriétés suivis de l’objet.

S’applique à