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 third party features like Query Cache and Query Future cannot be used directly with Immediate Method since the query is already resolved.
EF+ Query Deferred provides more flexibility to other features.
Here comes in play the deferred query which acts exactly like deferred methods, by modifying the query expression without resolving it.
All LINQ IQueryable extension methods and overloads are supported:
EF+ Query Deferred
Defer the execution of a query which is normally executed to allow some features like Query Cache and Query Future.
EF+ Query Deferred Execute
Execute the deferred query and return the result.
EF+ Query Deferred Execute Async
Execute the Deferred query asynchronously and return the result.
ExecuteAsync methods are available starting from .NET Framework 4.5 and support all the same options than Execute methods.
Real Life Scenarios
EF Query Deferred brings advantages to other third party features:
- Allows to use Immediate Method with EF+ Query Cache.
- Allows to use Immediate Method with EF+ Query Future.
- Allows to use Immediate Method with YOUR own features.
Behind the code
When a deferred method is used, the query expression is created exactly like a non-deferred method but instead of invoking the execute method from the query provider, a new instance of a class QueryDeferred
The QueryDeferred instance has methods to either execute the expression from the query provider or let a third party library use the object query.
- EF+ Query Deferred: Full version or Standalone version
- Database Provider: All supported
- Entity Framework Version: EF5, EF6, EF Core
- Minimum Framework Version: .NET Framework 4
As we saw, EF+ Query Deferred brings considerable advantages to other libraries by letting them use immediate methods without removing any of their features.
Need help getting started? email@example.com
We welcome all comments, ideas and suggestions to improve our library.