EntityFrameworkCore.Parallel
5.0.0
dotnet add package EntityFrameworkCore.Parallel --version 5.0.0
NuGet\Install-Package EntityFrameworkCore.Parallel -Version 5.0.0
<PackageReference Include="EntityFrameworkCore.Parallel" Version="5.0.0" />
paket add EntityFrameworkCore.Parallel --version 5.0.0
#r "nuget: EntityFrameworkCore.Parallel, 5.0.0"
// Install EntityFrameworkCore.Parallel as a Cake Addin #addin nuget:?package=EntityFrameworkCore.Parallel&version=5.0.0 // Install EntityFrameworkCore.Parallel as a Cake Tool #tool nuget:?package=EntityFrameworkCore.Parallel&version=5.0.0
EntityFrameworkCore.Parallel
This extension to Entity Framework Core adds a Set<TContext, TEntity>()
method to IDbContextFactory<TContext>
.
For easy use it also adds a Parallel()
method to IDbContextFactory<TContext>
and a Set<TEntity>()
method to IDbContextFactory<DbContext>
.
This allows you to easily execute multiple queries in parallel without the need to write complex code, or a lot of using
blocks or statements.
You can stick to all your known methods from IQueryable<TEntity>
.
As the context is disposed after your query is executed, all results will obviously not be tracked and disconnected from any DbContext
.
How to use
In your Startup
class, add a DbContextfactory
. If you want a pooled one, or not is up to you.
services.AddPooledDbContextFactory<OrderContext>(options => options.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=OrderTest"));
In your business class, inject an IDbContextFactory<TContext>
and use it like this
var ordersFromDb = await _factory.Parallel().Set<Order>().Where(o => o.Id > 3).ToListAsync(cancellationToken);
Or like this
var ordersFromDb = await _factory.Set<MyContext, Order>().Where(o => o.Id > 3).ToListAsync(cancellationToken);
Migration from Entity Framework Core 5 to 6
Since Entity Framework Core 6, IDbContextFactory<TContext>
is no longer covariant (TContext
is not marked with the out
keyword).
Because of that, the following code does no longer work.
var ordersFromDb = await _factory.Set<Order>().Where(o => o.Id > 3).ToListAsync();
See the How to use section for two possibilities that you can use instead. If you want some background information, have a look at https://github.com/dotnet/efcore/issues/26630
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. |
-
net9.0
- Microsoft.EntityFrameworkCore (>= 9.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on EntityFrameworkCore.Parallel:
Package | Downloads |
---|---|
RESTworld.Business
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
5.0.0 | 115 | 11/19/2024 |
4.1.1 | 843 | 10/11/2024 |
4.1.0 | 1,333 | 9/20/2024 |
4.0.5 | 668 | 7/10/2024 |
4.0.4 | 254 | 6/4/2024 |
4.0.3 | 125 | 5/24/2024 |
4.0.2 | 284 | 4/19/2024 |
4.0.1 | 1,886 | 1/9/2024 |
4.0.0 | 666 | 11/14/2023 |
3.0.9 | 437 | 10/23/2023 |
3.0.8 | 432 | 9/5/2023 |
3.0.7 | 468 | 7/17/2023 |
3.0.6 | 396 | 6/28/2023 |
3.0.5 | 1,009 | 6/14/2023 |
3.0.4 | 806 | 4/18/2023 |
3.0.3 | 758 | 2/22/2023 |
3.0.2 | 396 | 2/9/2023 |
3.0.1 | 890 | 12/21/2022 |
3.0.0 | 1,164 | 11/9/2022 |
2.2.0 | 3,348 | 10/20/2022 |
2.1.0 | 2,197 | 6/28/2022 |
2.0.3 | 2,774 | 5/13/2022 |
2.0.2 | 3,699 | 3/9/2022 |
2.0.1 | 2,291 | 2/22/2022 |
2.0.0 | 3,121 | 12/1/2021 |
1.0.2 | 1,069 | 11/4/2021 |
1.0.1 | 2,915 | 9/7/2021 |
1.0.0 | 2,353 | 11/24/2020 |