CompiledQuery Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine zwischengespeicherte LINQ to Entities-Abfrage dar.
public ref class CompiledQuery sealed
public sealed class CompiledQuery
type CompiledQuery = class
Public NotInheritable Class CompiledQuery
- Vererbung
-
CompiledQuery
Beispiele
Im folgenden Beispiel wird eine Abfrage kompiliert und aufgerufen, die Parameter akzeptiert DateTime und Decimal eingegeben und eine Reihenfolge von Aufträgen zurückgibt, bei denen das Bestelldatum später als der 8. März 2003 liegt und die Gesamtfälligkeit kleiner als 300,00 $ ist:
static readonly Func<AdventureWorksEntities, DateTime, Decimal, IQueryable<SalesOrderHeader>> s_compiledQuery5 =
CompiledQuery.Compile<AdventureWorksEntities, DateTime, Decimal, IQueryable<SalesOrderHeader>>(
(ctx, orderDate, totalDue) => from product in ctx.SalesOrderHeaders
where product.OrderDate > orderDate
&& product.TotalDue < totalDue
orderby product.OrderDate
select product);
static void CompiledQuery5()
{
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
DateTime date = new DateTime(2003, 3, 8);
Decimal amountDue = 300.00M;
IQueryable<SalesOrderHeader> orders = s_compiledQuery5.Invoke(context, date, amountDue);
foreach (SalesOrderHeader order in orders)
{
Console.WriteLine("ID: {0} Order date: {1} Total due: {2}", order.SalesOrderID, order.OrderDate, order.TotalDue);
}
}
}
ReadOnly s_compQuery5 = _
CompiledQuery.Compile(Of AdventureWorksEntities, DateTime, Decimal, IQueryable(Of SalesOrderHeader))( _
Function(ctx, orderDate, totalDue) From product In ctx.SalesOrderHeaders _
Where product.OrderDate > orderDate _
And product.TotalDue < totalDue _
Order By product.OrderDate _
Select product)
Sub CompiledQuery5()
Using context As New AdventureWorksEntities()
Dim orderedAfterDate As DateTime = New DateTime(2003, 3, 8)
Dim amountDue As Decimal = 300.0
Dim orders As IQueryable(Of SalesOrderHeader) = _
s_compQuery5.Invoke(context, orderedAfterDate, amountDue)
For Each order In orders
Console.WriteLine("ID: {0} Order date: {1} Total due: {2}", _
order.SalesOrderID, order.OrderDate, order.TotalDue)
Next
End Using
End Sub
Hinweise
Stellt die Kompilierung und Zwischenspeicherung von Abfragen für die Wiederverwendung bereit. Diese Klasse enthält eine einzelne Compile Methode mit mehreren Überladungen. Sie rufen die Compile Methode auf, um einen neuen Delegaten für die kompilierte Abfrage zu erstellen. Der Delegat erzeugt, wenn er mit dem ObjectContext Eingabeparameter und anderen Parameterwerten aufgerufen wird, ein Ergebnis (z. B. eine IQueryable<T> Instanz). Die Abfrage wird übersetzt und zwischengespeichert, wenn die Stellvertretung zum ersten Mal aufgerufen wird.