Entity Framework Classic Query Deferred
Description
There are two types of IQueryable extension methods:
- Deferred Methods: The query expression is modified but the query is not resolved (Select, Where, etc.).
- Immediate Methods: The query expression is modified and the query is resolved (Count, First, etc.).
However, some features like Query Cache and Query Future cannot be used directly with the Immediate Method since the query is already resolved.
Query Deferred provides more flexibility to other features.
All LINQ IQueryable extension methods and overloads are supported:
Name | Description | Example |
---|---|---|
DeferredAll |
QueryDeferred extension method. Determines whether all elements of a sequence satisfy a condition. | NET Core / NET Framework |
DeferredAny |
QueryDeferred extension method. Determines whether a sequence contains any elements. | NET Core / NET Framework |
DeferredAverage |
QueryDeferred extension method. Computes the average of a sequence of Single values. | NET Core / NET Framework |
DeferredCount |
QueryDeferred extension method. Returns the number of elements in a sequence. | NET Core / NET Framework |
DeferredFirst |
QueryDeferred extension method. Returns the first element of a sequence. | NET Core / NET Framework |
DeferredFirstOrDefault |
QueryDeferred extension method. Returns the first element of a sequence, or a default value if the sequence contains no elements. | NET Core / NET Framework |
DeferredLongCount |
QueryDeferred extension method. Returns an Int64 that represents how many elements in a sequence satisfy a condition. | NET Core / NET Framework |
DeferredMax |
QueryDeferred extension method. Returns the maximum value in a sequence | NET Core / NET Framework |
DeferredMin |
QueryDeferred extension method. Returns the minimum value in a sequence | NET Core / NET Framework |
DeferredSingle |
QueryDeferred extension method. Returns the minimum value in a sequence of Single values. | NET Core / NET Framework |
DeferredSingleOrDefault |
QueryDeferred extension method. Returns the minimum value in a sequence of nullable Single values. | NET Core / NET Framework |
DeferredSum |
QueryDeferred extension method. Computes the sum of a sequence | NET Core / NET Framework |
Real-Life Scenarios
Query Cache
You want to cache the customer count (immediate method) with the Query Cache feature. You can defer the customer count with the DeferredCount
method.
// ... Coming soon...
Query Future
You want to return the customer count (immediate method) with a paged list using the Query Future feature. You can defer the customer count with the DeferredCount
method.
// Not do Select var futurValue = context.Customers.DeferredCount().FutureValue(); context.Customers.Add(new Customer() { Name = "Customer_D", Description = "Description"}); context.SaveChanges(); // SELECT COUNT(1) FROM Customers Console.WriteLine("Count Customer is : " + futurValue.Value);
Try it: NET Core | NET Framework
Documnentation
QueryDeferred
Methods
Name | Description | Example |
---|---|---|
Execute() |
Execute the deferred expression and return the result. | NET Core / NET Framework |
ExecuteAsync() |
Execute asynchrounously the deferred expression and return the result. | NET Core / NET Framework |
ExecuteAsync(CancellationToken cancellationToken) |
Execute asynchrounously the deferred expression and return the result. | NET Core / NET Framework |