DataContext.ExecuteQuery Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Överlagringar
| Name | Description |
|---|---|
| ExecuteQuery(Type, String, Object[]) |
Kör SQL-frågor direkt i databasen. |
| ExecuteQuery<TResult>(String, Object[]) |
Kör SQL-frågor direkt i databasen och returnerar objekt. |
ExecuteQuery(Type, String, Object[])
Kör SQL-frågor direkt i databasen.
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
Parametrar
- elementType
- Type
Typen av som IEnumerable<T> ska returneras.
Algoritmen för matchande kolumner i resultatet av frågan till fält eller egenskaper i objektet fungerar på följande sätt:
Om ett fält eller en egenskap mappas till ett visst kolumnnamn förväntas kolumnnamnet i resultatuppsättningen.
Om ett fält eller en egenskap inte mappas förväntas en kolumn med samma namn som fältet eller egenskapen i resultatuppsättningen.
Jämförelsen utförs genom att söka efter en skiftlägeskänslig matchning först. Om den här matchningen inte hittas sker en efterföljande sökning efter en skiftlägeskänslig matchning.
Frågan måste returnera alla spårade fält och egenskaper för objektet (förutom de som läses in senare) när alla följande villkor är sanna:
T är en entitet som uttryckligen spåras av DataContext.
ObjectTrackingEnabled är true.
Entiteten har en primärnyckel.
Annars utlöses ett undantag.
- query
- String
SQL-frågan som ska köras.
- parameters
- Object[]
Matrisen med parametrar som ska skickas till kommandot. Notera följande beteende:
Om antalet objekt i matrisen är mindre än det högsta antalet som identifieras i kommandosträngen genereras ett undantag.
Om matrisen innehåller objekt som inte refereras till i kommandosträngen genereras inget undantag.
Om en parameter är nullkonverteras den till DBNull.Value.
Returer
En IEnumerable<T> samling objekt som returneras av frågan.
Gäller för
ExecuteQuery<TResult>(String, Object[])
Kör SQL-frågor direkt i databasen och returnerar objekt.
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)
Typparametrar
- TResult
Typ av element i den returnerade samlingen.
Parametrar
- query
- String
SQL-frågan som ska köras.
- parameters
- Object[]
Matrisen med parametrar som ska skickas till kommandot. Notera följande beteende:
Om antalet objekt i matrisen är mindre än det högsta antalet som identifieras i kommandosträngen genereras ett undantag.
Om matrisen innehåller objekt som inte refereras till i kommandosträngen genereras inget undantag.
Om en parameter är null konverteras den till DBNull.Value.
Returer
En samling objekt som returneras av frågan.
Exempel
I följande exempel visas en användning för den här metoden:
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
Kommentarer
Den här metoden är en direktmekanism för fall där LINQ till SQL inte tillhandahåller ett visst scenario.
Algoritmen för matchande kolumner i resultatet av frågan till fält och egenskaper i objektet fungerar på följande sätt:
Om ett fält eller en egenskap mappas till ett visst kolumnnamn förväntas kolumnnamnet i resultatuppsättningen.
Om ett fält eller en egenskap inte mappas förväntas en kolumn med samma namn som fältet eller egenskapen i resultatuppsättningen.
Jämförelsen utförs genom att först söka efter en skiftlägeskänslig matchning. Om en sådan matchning inte hittas sker en efterföljande sökning efter en skiftlägeskänslig matchning.
Frågan måste returnera alla spårade fält och egenskaper för objektet (förutom de som omfattas av uppskjuten inläsning) när allt följande är sant:
Om
<T>är en entitet som uttryckligen spåras av DataContext.ObjectTrackingEnabled är sant.
Entiteten har en primärnyckel.
Annars utlöses ett undantag.
I alla andra fall kan frågan bara hämta en delmängd av de spårade fälten och egenskaperna för objektet.