Bsft.Idempotency.EFCore
2.2.0
dotnet add package Bsft.Idempotency.EFCore --version 2.2.0
NuGet\Install-Package Bsft.Idempotency.EFCore -Version 2.2.0
<PackageReference Include="Bsft.Idempotency.EFCore" Version="2.2.0" />
<PackageVersion Include="Bsft.Idempotency.EFCore" Version="2.2.0" />
<PackageReference Include="Bsft.Idempotency.EFCore" />
paket add Bsft.Idempotency.EFCore --version 2.2.0
#r "nuget: Bsft.Idempotency.EFCore, 2.2.0"
#:package Bsft.Idempotency.EFCore@2.2.0
#addin nuget:?package=Bsft.Idempotency.EFCore&version=2.2.0
#tool nuget:?package=Bsft.Idempotency.EFCore&version=2.2.0
Bsft.Idempotency.EFCore
The shared idempotency record store: one table on the application's own context, whose unique index is what makes a duplicate request a duplicate across every replica rather than within one process.
Install
dotnet add package Bsft.Idempotency.EFCore
Requires Bsft.Idempotency (pulled transitively), Bsft.Core for the framework's PollLoop the
pruner runs on, and Microsoft.EntityFrameworkCore.
Register
Implement IIdempotencyDbContext on the application's context and apply the configuration:
public DbSet<IdempotencyRecordEntity> IdempotencyRecords => Set<IdempotencyRecordEntity>();
protected override void OnModelCreating(ModelBuilder modelBuilder)
=> modelBuilder.ApplyConfiguration(new IdempotencyRecordEntityConfiguration());
services.AddBsftIdempotency(configuration);
services.AddBsftIdempotencyEFCore<AppDbContext>();
The call replaces the in-memory store rather than adding to it, so the order of the two lines does not matter. Do not leave the configuration to convention: without it the key columns are mapped with no unique index and no length, and the store is there and protects nothing.
Configure
| Option | Default | Effect |
|---|---|---|
| — | — | The package declares no options of its own: everything an operator decides is on BsftIdempotencyOptions, and everything the schema decides is in IdempotencyRecordEntityConfiguration. |
Validation: none of its own. The retention and the lease that shape the table come from
BsftIdempotencyOptions, which AddBsftIdempotency validates at start-up.
Extend
None. The store and the pruner are internal; a host that wants different persistence implements
IIdempotencyStore from Bsft.Idempotency and does not take this package.
Documentation
Topic page: docs/idempotency.md. Conventions: docs/package-conventions.md.
| 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 was computed. 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
- Bsft.Core (>= 2.2.0)
- Bsft.Idempotency (>= 2.2.0)
- Microsoft.EntityFrameworkCore (>= 10.0.12)
- Microsoft.EntityFrameworkCore.Relational (>= 10.0.12)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
-
net8.0
- Bsft.Core (>= 2.2.0)
- Bsft.Idempotency (>= 2.2.0)
- Microsoft.EntityFrameworkCore (>= 9.0.19)
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.19)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.19)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.19)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.19)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.