OrionLock.EntityFrameworkCore
2.0.0
dotnet add package OrionLock.EntityFrameworkCore --version 2.0.0
NuGet\Install-Package OrionLock.EntityFrameworkCore -Version 2.0.0
<PackageReference Include="OrionLock.EntityFrameworkCore" Version="2.0.0" />
<PackageVersion Include="OrionLock.EntityFrameworkCore" Version="2.0.0" />
<PackageReference Include="OrionLock.EntityFrameworkCore" />
paket add OrionLock.EntityFrameworkCore --version 2.0.0
#r "nuget: OrionLock.EntityFrameworkCore, 2.0.0"
#:package OrionLock.EntityFrameworkCore@2.0.0
#addin nuget:?package=OrionLock.EntityFrameworkCore&version=2.0.0
#tool nuget:?package=OrionLock.EntityFrameworkCore&version=2.0.0
OrionLock.EntityFrameworkCore
EF Core lock-table backend for OrionLock. One row per lock key in OrionLock_Locks; provider-agnostic (PostgreSQL, SQL Server, MySQL, SQLite).
modelBuilder.ApplyConfiguration(new OrionLockRowEntityTypeConfiguration());
services.AddOrionLock().UseEntityFrameworkCore<AppDbContext>();
Run dotnet ef migrations add Add_OrionLock_Locks.
Reader-writer (shared/exclusive) lock
A provider-portable distributed reader-writer lock: many Shared (read) holders coexist, OR one Exclusive (write) holder. Works on any relational EF Core provider (SQL Server, PostgreSQL, ...) through provider-agnostic EF Core. Holds are clock-leased rows in OrionLock_RwHolds; per-resource serialization uses a Serializable transaction over an anchor row in OrionLock_RwResources, and the live DB clock (CURRENT_TIMESTAMP) is read per transition.
modelBuilder.ApplyConfiguration(new OrionLockRwHoldRowEntityTypeConfiguration());
modelBuilder.ApplyConfiguration(new OrionLockRwResourceRowEntityTypeConfiguration());
services.AddOrionLock().UseEntityFrameworkCoreSharedExclusive<AppDbContext>();
Create both tables via EF Core migrations / Database.EnsureCreated(), then resolve ISharedExclusiveLock.
| 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.Relational (>= 9.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.0)
- OrionLock (>= 2.0.0)
-
net8.0
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.0)
- OrionLock (>= 2.0.0)
-
net9.0
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.0)
- OrionLock (>= 2.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 |
|---|---|---|
| 2.0.0 | 102 | 7/29/2026 |
| 1.0.1 | 100 | 7/27/2026 |
| 1.0.0 | 115 | 6/30/2026 |
| 0.6.0 | 110 | 6/27/2026 |
| 0.5.0 | 113 | 6/26/2026 |
| 0.4.1 | 118 | 6/20/2026 |
| 0.4.0 | 109 | 6/19/2026 |
| 0.3.32 | 121 | 6/17/2026 |
| 0.3.31 | 103 | 6/16/2026 |
| 0.3.30 | 119 | 6/16/2026 |
| 0.3.28 | 107 | 6/15/2026 |
| 0.3.27 | 107 | 6/15/2026 |
| 0.3.26 | 110 | 6/13/2026 |
| 0.3.25 | 104 | 6/13/2026 |
| 0.3.24 | 109 | 6/12/2026 |
| 0.3.23 | 105 | 6/12/2026 |
| 0.3.22 | 118 | 6/11/2026 |
| 0.3.21 | 109 | 6/11/2026 |
| 0.3.20 | 103 | 6/11/2026 |
| 0.3.19 | 105 | 6/11/2026 |