Innovabit.DotNet.Interceptors.Transactions.EntityFrameworkCore
2.0.117
dotnet add package Innovabit.DotNet.Interceptors.Transactions.EntityFrameworkCore --version 2.0.117
NuGet\Install-Package Innovabit.DotNet.Interceptors.Transactions.EntityFrameworkCore -Version 2.0.117
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="Innovabit.DotNet.Interceptors.Transactions.EntityFrameworkCore" Version="2.0.117" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Innovabit.DotNet.Interceptors.Transactions.EntityFrameworkCore" Version="2.0.117" />
<PackageReference Include="Innovabit.DotNet.Interceptors.Transactions.EntityFrameworkCore" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Innovabit.DotNet.Interceptors.Transactions.EntityFrameworkCore --version 2.0.117
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Innovabit.DotNet.Interceptors.Transactions.EntityFrameworkCore, 2.0.117"
#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.
#:package Innovabit.DotNet.Interceptors.Transactions.EntityFrameworkCore@2.0.117
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Innovabit.DotNet.Interceptors.Transactions.EntityFrameworkCore&version=2.0.117
#tool nuget:?package=Innovabit.DotNet.Interceptors.Transactions.EntityFrameworkCore&version=2.0.117
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Innovabit.DotNet.Interceptors.Transactions.EntityFrameworkCore
Entity Framework Core provider for
Innovabit.DotNet.Interceptors.Transactions.Abstractions:
[Transactional] methods run inside a transaction opened on your DbContext's own connection, so
every SaveChanges they make takes part in it.
Usage
services.AddDbContext<OrderDbContext>(o => o.UseSqlServer(connectionString));
services
.AddInterceptors()
.AddEntityFrameworkCoreTransactions<OrderDbContext>();
services.AddScopedWithInterception<IOrderService, OrderService>();
public class OrderService(OrderDbContext db, IInventoryService inventory) : IOrderService
{
[Transactional]
public async Task PlaceAsync(Order order, CancellationToken cancellationToken)
{
db.Orders.Add(order);
await db.SaveChangesAsync(cancellationToken);
// Joins the same transaction: nothing is persisted unless both steps succeed.
await inventory.ReserveAsync(order.Lines, cancellationToken);
}
}
The DbContext must be registered with a scoped lifetime (what AddDbContext does by default),
so the interceptor and the intercepted method share the same connection.
Provider notes
[Transactional] property |
Behaviour here |
|---|---|
Propagation |
Required, Supports, Mandatory and Never work as documented. RequiresNew throws NotSupportedException when a transaction is already in progress — a DbContext holds one connection, which cannot carry two independent transactions. Use the SystemTransactions provider, or a second DbContext. |
IsolationLevel |
Passed straight to Database.BeginTransaction(IsolationLevel). |
TimeoutSeconds |
EF Core has no transaction timeout, so it is applied as the command timeout for the statements issued inside the transaction. The context's previous command timeout is restored afterwards. |
ReadOnly |
The transaction is opened and then rolled back instead of committed. Tracking behaviour is left untouched. |
License
MIT
| 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- Innovabit.DotNet.Interceptors.Transactions.Abstractions (>= 2.0.117)
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.22)
-
net8.0
- Innovabit.DotNet.Interceptors.Transactions.Abstractions (>= 2.0.117)
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.22)
-
net9.0
- Innovabit.DotNet.Interceptors.Transactions.Abstractions (>= 2.0.117)
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.22)
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 |
|---|---|---|
| 2.0.117 | 0 | 10/31/2026 |
| 2.0.116 | 73 | 10/26/2026 |
| 2.0.115 | 101 | 10/17/2026 |
| 2.0.114 | 90 | 10/10/2026 |
| 2.0.113 | 104 | 10/3/2026 |
| 2.0.112 | 99 | 9/28/2026 |
| 2.0.111 | 91 | 9/28/2026 |
| 2.0.110 | 106 | 9/27/2026 |
| 2.0.109 | 91 | 9/26/2026 |
| 2.0.108 | 94 | 9/26/2026 |
| 2.0.107 | 98 | 9/26/2026 |
| 2.0.105 | 108 | 9/25/2026 |
| 1.0.0.104 | 95 | 9/25/2026 |
| 1.0.0.103 | 100 | 9/25/2026 |
| 1.0.0.102 | 100 | 9/25/2026 |
| 1.0.0.101 | 97 | 9/25/2026 |
| 1.0.0.100 | 101 | 9/25/2026 |
| 1.0.0.99 | 98 | 9/25/2026 |