DataContext.ExecuteQuery Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 :
T
est 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
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 .DataContextObjectTrackingEnabled 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.