Mediarq.Idempotency.EntityFrameworkCore
1.5.1
dotnet add package Mediarq.Idempotency.EntityFrameworkCore --version 1.5.1
NuGet\Install-Package Mediarq.Idempotency.EntityFrameworkCore -Version 1.5.1
<PackageReference Include="Mediarq.Idempotency.EntityFrameworkCore" Version="1.5.1" />
<PackageVersion Include="Mediarq.Idempotency.EntityFrameworkCore" Version="1.5.1" />
<PackageReference Include="Mediarq.Idempotency.EntityFrameworkCore" />
paket add Mediarq.Idempotency.EntityFrameworkCore --version 1.5.1
#r "nuget: Mediarq.Idempotency.EntityFrameworkCore, 1.5.1"
#:package Mediarq.Idempotency.EntityFrameworkCore@1.5.1
#addin nuget:?package=Mediarq.Idempotency.EntityFrameworkCore&version=1.5.1
#tool nuget:?package=Mediarq.Idempotency.EntityFrameworkCore&version=1.5.1
Mediarq.Idempotency.EntityFrameworkCore
An IDistributedCache backed by EF Core, so Mediarq.Idempotency can persist replay results in your
own database instead of requiring Redis.
dotnet add package Mediarq.Idempotency.EntityFrameworkCore
Usage
- Map the cache table in your
DbContext:
protected override void OnModelCreating(ModelBuilder modelBuilder)
=> modelBuilder.ApplyMediarqIdempotencyCache();
- Register it instead of
AddDistributedMemoryCache()/AddStackExchangeRedisCache(), beforeAddMediarqIdempotency():
builder.Services.AddMediarqIdempotencyEntityFrameworkCore<AppDbContext>(o => o.CleanupInterval = TimeSpan.FromMinutes(10));
builder.Services.AddMediarqIdempotency();
That's it — IdempotencyBehavior already depends on the standard IDistributedCache abstraction, so it
works unchanged against this implementation. A background IdempotencyCacheCleanupService periodically
removes expired entries (already-expired entries are also skipped on read, so this is just storage
hygiene for keys that are never read again after expiring).
Note on lifetime
EfCoreDistributedCache<TContext> is registered scoped, tied to the same TContext instance as the
rest of the request — unlike the usual singleton IDistributedCache implementations. This is safe for
IdempotencyBehavior (itself scoped), but don't share this registration with a singleton or with a
general-purpose cache used elsewhere in your app.
Learn more
Mediarq.Idempotency · Wiring extensions · Full README
MIT © Nicolas Rouffart
| 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
- Microsoft.EntityFrameworkCore (>= 8.0.10)
- Microsoft.Extensions.Caching.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.1)
-
net8.0
- Microsoft.EntityFrameworkCore (>= 8.0.10)
- Microsoft.Extensions.Caching.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.1)
-
net9.0
- Microsoft.EntityFrameworkCore (>= 8.0.10)
- Microsoft.Extensions.Caching.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.