Novolis.Storage.Json
2026.1.1.36
See the version list below for details.
dotnet add package Novolis.Storage.Json --version 2026.1.1.36
NuGet\Install-Package Novolis.Storage.Json -Version 2026.1.1.36
<PackageReference Include="Novolis.Storage.Json" Version="2026.1.1.36" />
<PackageVersion Include="Novolis.Storage.Json" Version="2026.1.1.36" />
<PackageReference Include="Novolis.Storage.Json" />
paket add Novolis.Storage.Json --version 2026.1.1.36
#r "nuget: Novolis.Storage.Json, 2026.1.1.36"
#:package Novolis.Storage.Json@2026.1.1.36
#addin nuget:?package=Novolis.Storage.Json&version=2026.1.1.36
#tool nuget:?package=Novolis.Storage.Json&version=2026.1.1.36
<p align="center"> <a href="https://github.com/Novolis-Platform/novolis-storage"> <img src="https://raw.githubusercontent.com/Novolis-Platform/.github/main/brand/logo-icon.svg" width="72" alt="Novolis"/> </a> </p>
Novolis.Storage.Json
JSON file-per-entity IRepository<T> provider. Layout: {RootPath}/{TypeName}/{Id:N}.json. Uses Novolis.IO.Workspace for reads/writes and optional cross-process locking.
Install
dotnet add package Novolis.Storage.Json
Depends on Novolis.Storage.Abstractions and Novolis.IO.Workspace.
Quick start
using Microsoft.Extensions.DependencyInjection;
using Novolis.Storage.Abstractions;
using Novolis.Storage.Json;
services.AddStorage(builder => builder.AddJsonProvider(o =>
{
o.RootPath = @"C:\data\saves";
o.UseProcessLock = true;
o.CreateIfMissing = true;
}));
var repo = sp.GetRequiredService<IRepository<MyEntity>>();
await repo.UpsertAsync(entity, cancellationToken);
AddJsonFilesProvider is an alias for AddJsonProvider.
Create with a new id:
var entity = await repo.CreateAsync(
idProvider,
id => new MyEntity { Id = id },
cancellationToken);
Startup validates root existence, read/write probes, and optional .store.lock when UseProcessLock && !ReadOnly.
API
| Type | Role |
|---|---|
JsonFilesOptions |
RootPath, ReadOnly, CreateIfMissing, UseProcessLock, LockStripes, JsonSerializerOptions |
JsonStorageWorkspaceKey |
Keyed DI name for the backing IFileWorkspace (Default) |
JsonStorageExtensions.AddJsonProvider |
Registers workspace, options, lock, repositories |
RepositoryCreateExtensions.CreateAsync |
Factory helper on IRepository<T> |
Related
| Package | Role |
|---|---|
Novolis.Storage.Abstractions |
IRepository<T>, AddStorage, IIdProvider |
Novolis.IO.Workspace |
PhysicalFileWorkspace used internally |
Novolis.Storage.LiteDb |
Single-file document store alternative |
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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.Extensions.DependencyInjection.Abstractions (>= 10.0.12)
- Microsoft.Extensions.FileProviders.Abstractions (>= 10.0.12)
- Microsoft.Extensions.FileProviders.Physical (>= 10.0.12)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
- Novolis.IO.Workspace (>= 2026.1.1.31)
- Novolis.Storage.Abstractions (>= 2026.1.1.36)
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 |
|---|---|---|
| 2026.1.1.54 | 81 | 10/5/2026 |
| 2026.1.1.53 | 85 | 10/4/2026 |
| 2026.1.1.52 | 84 | 10/4/2026 |
| 2026.1.1.51 | 89 | 10/4/2026 |
| 2026.1.1.50 | 91 | 10/3/2026 |
| 2026.1.1.49 | 88 | 10/3/2026 |
| 2026.1.1.48 | 95 | 10/3/2026 |
| 2026.1.1.46 | 78 | 10/3/2026 |
| 2026.1.1.45 | 81 | 10/3/2026 |
| 2026.1.1.42 | 81 | 10/3/2026 |
| 2026.1.1.41 | 87 | 10/3/2026 |
| 2026.1.1.37 | 81 | 10/1/2026 |
| 2026.1.1.36 | 88 | 9/30/2026 |