Innovabit.DotNet.Interceptors.Transactions.AdoNet
2.0.117
dotnet add package Innovabit.DotNet.Interceptors.Transactions.AdoNet --version 2.0.117
NuGet\Install-Package Innovabit.DotNet.Interceptors.Transactions.AdoNet -Version 2.0.117
<PackageReference Include="Innovabit.DotNet.Interceptors.Transactions.AdoNet" Version="2.0.117" />
<PackageVersion Include="Innovabit.DotNet.Interceptors.Transactions.AdoNet" Version="2.0.117" />
<PackageReference Include="Innovabit.DotNet.Interceptors.Transactions.AdoNet" />
paket add Innovabit.DotNet.Interceptors.Transactions.AdoNet --version 2.0.117
#r "nuget: Innovabit.DotNet.Interceptors.Transactions.AdoNet, 2.0.117"
#:package Innovabit.DotNet.Interceptors.Transactions.AdoNet@2.0.117
#addin nuget:?package=Innovabit.DotNet.Interceptors.Transactions.AdoNet&version=2.0.117
#tool nuget:?package=Innovabit.DotNet.Interceptors.Transactions.AdoNet&version=2.0.117
Innovabit.DotNet.Interceptors.Transactions.AdoNet
ADO.NET provider for
Innovabit.DotNet.Interceptors.Transactions.Abstractions:
[Transactional] methods run inside a transaction opened on a plain DbConnection. This is the
provider for Dapper and hand-written SQL, with no ORM in the picture.
Usage
services.AddScoped<DbConnection>(_ => new SqlConnection(connectionString));
services
.AddInterceptors()
.AddAdoNetTransactions(); // or .AddAdoNetTransactions(sp => new SqlConnection(...))
services.AddScopedWithInterception<IOrderService, OrderService>();
Repositories read the open transaction from IAmbientDbTransaction and pass it to their commands —
Dapper runs outside the transaction (and commits on its own) if you forget:
public class OrderRepository(IAmbientDbTransaction ambient)
{
public Task InsertAsync(Order order) =>
ambient.Connection.ExecuteAsync(Sql.InsertOrder, order, ambient.Current);
}
public class OrderService(OrderRepository orders, OutboxRepository outbox) : IOrderService
{
[Transactional]
public async Task PlaceAsync(Order order)
{
await orders.InsertAsync(order);
await outbox.EnqueueAsync(new OrderPlaced(order.Id)); // same transaction
}
}
The connection is opened on demand when the first transaction starts and stays open for the rest of the scope, since that is the connection the method's own commands run on.
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 — one connection cannot carry two independent transactions. Use the SystemTransactions provider. |
IsolationLevel |
Passed straight to DbConnection.BeginTransaction(IsolationLevel). |
TimeoutSeconds |
Ignored. ADO.NET has no transaction timeout; bound the work with command timeouts, or use the SystemTransactions provider. |
ReadOnly |
The transaction is opened and then rolled back instead of committed. |
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. |
-
net10.0
- Innovabit.DotNet.Interceptors.Transactions.Abstractions (>= 2.0.117)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.14)
-
net8.0
- Innovabit.DotNet.Interceptors.Transactions.Abstractions (>= 2.0.117)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.14)
-
net9.0
- Innovabit.DotNet.Interceptors.Transactions.Abstractions (>= 2.0.117)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.14)
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 | 65 | 10/31/2026 |
| 2.0.116 | 93 | 10/26/2026 |
| 2.0.115 | 109 | 10/17/2026 |
| 2.0.114 | 97 | 10/10/2026 |
| 2.0.113 | 109 | 10/3/2026 |
| 2.0.112 | 100 | 9/28/2026 |
| 2.0.111 | 100 | 9/28/2026 |
| 2.0.110 | 109 | 9/27/2026 |
| 2.0.109 | 108 | 9/26/2026 |
| 2.0.108 | 102 | 9/26/2026 |
| 2.0.107 | 105 | 9/26/2026 |
| 2.0.106 | 115 | 9/25/2026 |
| 2.0.105 | 99 | 9/25/2026 |
| 1.0.0.104 | 97 | 9/25/2026 |
| 1.0.0.103 | 95 | 9/25/2026 |
| 1.0.0.102 | 109 | 9/25/2026 |
| 1.0.0.101 | 100 | 9/25/2026 |
| 1.0.0.100 | 99 | 9/25/2026 |
| 1.0.0.99 | 105 | 9/25/2026 |