EntityFrameworkCore.Parallel
5.0.1
dotnet add package EntityFrameworkCore.Parallel --version 5.0.1
NuGet\Install-Package EntityFrameworkCore.Parallel -Version 5.0.1
<PackageReference Include="EntityFrameworkCore.Parallel" Version="5.0.1" />
<PackageVersion Include="EntityFrameworkCore.Parallel" Version="5.0.1" />
<PackageReference Include="EntityFrameworkCore.Parallel" />
paket add EntityFrameworkCore.Parallel --version 5.0.1
#r "nuget: EntityFrameworkCore.Parallel, 5.0.1"
#addin nuget:?package=EntityFrameworkCore.Parallel&version=5.0.1
#tool nuget:?package=EntityFrameworkCore.Parallel&version=5.0.1
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-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net9.0
- Microsoft.EntityFrameworkCore (>= 9.0.1)
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.1 | 373 | 3 months ago |
5.0.0 | 293 | 5 months ago |
4.1.1 | 1,545 | 6 months ago |
4.1.0 | 2,439 | 7 months ago |
4.0.5 | 789 | 9 months ago |
4.0.4 | 262 | 6/4/2024 |
4.0.3 | 132 | 5/24/2024 |
4.0.2 | 466 | 4/19/2024 |
4.0.1 | 1,905 | 1/9/2024 |
4.0.0 | 670 | 11/14/2023 |
3.0.9 | 439 | 10/23/2023 |
3.0.8 | 436 | 9/5/2023 |
3.0.7 | 472 | 7/17/2023 |
3.0.6 | 399 | 6/28/2023 |
3.0.5 | 1,037 | 6/14/2023 |
3.0.4 | 815 | 4/18/2023 |
3.0.3 | 767 | 2/22/2023 |
3.0.2 | 408 | 2/9/2023 |
3.0.1 | 901 | 12/21/2022 |
3.0.0 | 1,186 | 11/9/2022 |
2.2.0 | 3,362 | 10/20/2022 |
2.1.0 | 2,214 | 6/28/2022 |
2.0.3 | 2,791 | 5/13/2022 |
2.0.2 | 3,718 | 3/9/2022 |
2.0.1 | 2,310 | 2/22/2022 |
2.0.0 | 3,141 | 12/1/2021 |
1.0.2 | 1,090 | 11/4/2021 |
1.0.1 | 2,935 | 9/7/2021 |
1.0.0 | 2,386 | 11/24/2020 |