BackWave.EntityFrameworkCore
1.8.0-preview.2
dotnet add package BackWave.EntityFrameworkCore --version 1.8.0-preview.2
NuGet\Install-Package BackWave.EntityFrameworkCore -Version 1.8.0-preview.2
<PackageReference Include="BackWave.EntityFrameworkCore" Version="1.8.0-preview.2" />
<PackageVersion Include="BackWave.EntityFrameworkCore" Version="1.8.0-preview.2" />
<PackageReference Include="BackWave.EntityFrameworkCore" />
paket add BackWave.EntityFrameworkCore --version 1.8.0-preview.2
#r "nuget: BackWave.EntityFrameworkCore, 1.8.0-preview.2"
#:package BackWave.EntityFrameworkCore@1.8.0-preview.2
#addin nuget:?package=BackWave.EntityFrameworkCore&version=1.8.0-preview.2&prerelease
#tool nuget:?package=BackWave.EntityFrameworkCore&version=1.8.0-preview.2&prerelease
BackWave.EntityFrameworkCore
EF Core integration for BackWave. Enqueue a job inside your ambient unit of
work, and it commits or rolls back atomically with your DbContext changes. There's no outbox to poll
and nothing to reconcile between two writes.
using BackWave.EntityFrameworkCore; // the DbContext enqueue overload
await using var transaction = await db.Database.BeginTransactionAsync();
db.Orders.Add(order);
await db.SaveChangesAsync();
// The job rides on the DbContext's open transaction: it lands only if the order does.
var jobId = await client.EnqueueAsync(new SendInvoice(order.Id), db, dueTime: DateTimeOffset.UtcNow);
await transaction.CommitAsync(); // order + job commit together
If the transaction rolls back, the job is never enqueued. If it commits, the job is durably queued in the same atomic step as the write that justifies it.
Reschedule in the same transaction
Move a waiting job's due time in the same unit of work as your own change. The new due time commits
or rolls back with your DbContext changes.
using BackWave.EntityFrameworkCore; // the DbContext reschedule overload
await using var tx = await db.Database.BeginTransactionAsync();
campaign.SendAt = newSendAt;
await db.SaveChangesAsync();
var result = await backWaveOperator.RescheduleAsync(campaign.SendJobId, newSendAt, userId, db);
if (result == RescheduleResult.NotReschedulable)
{
await tx.RollbackAsync(); // the campaign is already sending or sent
return;
}
await tx.CommitAsync(); // the campaign date and the job's due time commit together
Keep the transaction short. The job row stays locked until you commit. On SQLite, the transaction holds the database write lock.
Notes
- Requires an open transaction on the
DbContext; the extension reads it and throws if there is none. - Works with any relational BackWave adapter whose tables live in the same database as your
DbContext(BackWave.Postgres, BackWave.SqlServer, or a co-resident BackWave.Sqlite file). - For an enqueue that is not part of a unit of work, call
BackWaveClient.EnqueueAsyncdirectly. - For a reschedule that is not part of a unit of work, call
BackWaveOperator.RescheduleAsyncdirectly.
Full documentation: https://backwave.app
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. 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. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- BackWave (>= 1.8.0-preview.2)
- Microsoft.EntityFrameworkCore.Relational (>= 10.0.0)
-
net8.0
- BackWave (>= 1.8.0-preview.2)
- Microsoft.EntityFrameworkCore.Relational (>= 8.0.10)
-
net9.0
- BackWave (>= 1.8.0-preview.2)
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.8.0-preview.2 | 50 | 10/17/2026 |
| 1.8.0-preview.1 | 58 | 10/9/2026 |
| 1.7.0 | 109 | 9/21/2026 |
| 1.7.0-preview.3 | 77 | 9/16/2026 |
| 1.7.0-preview.2 | 87 | 8/26/2026 |
| 1.7.0-preview.1 | 82 | 8/19/2026 |
| 1.6.0 | 139 | 8/17/2026 |
| 1.5.0 | 126 | 8/16/2026 |
| 1.4.0 | 136 | 7/18/2026 |
| 1.3.0 | 146 | 7/15/2026 |
| 1.2.0 | 140 | 7/12/2026 |
| 1.1.1 | 137 | 7/10/2026 |
| 1.1.0 | 136 | 7/6/2026 |
| 1.0.0 | 138 | 7/6/2026 |
Release notes and upgrade guidance: https://backwave.app/