EntityFrameworkCore.Parallel 5.0.0

dotnet add package EntityFrameworkCore.Parallel --version 5.0.0                
NuGet\Install-Package EntityFrameworkCore.Parallel -Version 5.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EntityFrameworkCore.Parallel" Version="5.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EntityFrameworkCore.Parallel --version 5.0.0                
#r "nuget: EntityFrameworkCore.Parallel, 5.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// 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 Compatible and additional computed target framework versions.
.NET net9.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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