Vorn.Entities.Server
9.1.2
dotnet add package Vorn.Entities.Server --version 9.1.2
NuGet\Install-Package Vorn.Entities.Server -Version 9.1.2
<PackageReference Include="Vorn.Entities.Server" Version="9.1.2" />
<PackageVersion Include="Vorn.Entities.Server" Version="9.1.2" />
<PackageReference Include="Vorn.Entities.Server" />
paket add Vorn.Entities.Server --version 9.1.2
#r "nuget: Vorn.Entities.Server, 9.1.2"
#:package Vorn.Entities.Server@9.1.2
#addin nuget:?package=Vorn.Entities.Server&version=9.1.2
#tool nuget:?package=Vorn.Entities.Server&version=9.1.2
Vorn.Entities.Server
This package adapts the core entity management abstractions to SignalR. It ships a typed hub base, EF Core configuration helpers, and notification relays so real-time clients see the same CRUD surface as REST consumers.
Install
dotnet add package Vorn.Entities.Server
Add Vorn.Entities for the core entities and Vorn.Entities.SignalR.Client if you plan to build clients.
Register services
builder.Services.AddSignalR();
builder.Services.AddVornEntityManagement(); // generated or manual registration of handlers/caches
builder.Services.AddSingleton<IEntityUserService, HttpContextEntityUserService>();
builder.Services.AddSingleton<IEntityTimeService, EntityTimeService>();
builder.Services.AddTransient<INotificationHandler<EntityNotificationCore>, EntityNotificationHandler>();
EntityNotificationHandler listens for persistence notifications and relays them to every connected client through the hub.
Configure EF Core
public sealed class AppDbContext(DbContextOptions<AppDbContext> options)
: DbContext(options)
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder
.ConfigureEntityDateTimeOffsetConversions()
.ConfigureEntitySoftDeleteFilters();
}
}
The extensions align your schema with the expectations of the Entity base type (UTC timestamps, soft deletes).
Create a hub
public sealed class DocumentHub(DocumentService service, IEntityUserService users)
: EntityServer<DocumentDto, DocumentDescriptorDto, DocumentService>(service, users)
{ }
app.MapHub<DocumentHub>("/hubs/documents");
The base class exposes every CRUD method (AddAsync, UpdateAsync, GetListAsync, RemoveByIdAsync, paging, counts, etc.) and
forwards caller context through IEntityUserService.
Emit notifications from elsewhere
Inject IHubContext<DocumentHub> (or the generic base) when background jobs need to notify clients:
public sealed class DocumentNotificationPublisher(IHubContext<DocumentHub> hub)
{
public Task PublishAsync(DocumentDto dto)
=> hub.Clients.All.SendAsync(EntityServerMethods.EntityChanged, dto);
}
The constant EntityServerMethods.EntityChanged matches what the client base subscribes to.
Tips
- Override hub methods if you need additional validation or want to extend the contract—call
await base.AddAsync(...)to keep the default behavior. - Group hubs per aggregate and use SignalR groups to scope notifications to tenants or contexts.
- Pair with the client package to get automatic reconnection, error handling, and notification processing on the UI.
| 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 was computed. 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. |
-
net8.0
- FluentValidation (>= 11.11.0)
- MediatR (>= 12.5.0)
- Microsoft.AspNetCore.SignalR.Core (>= 1.2.0)
- Microsoft.EntityFrameworkCore (>= 8.0.22)
- Microsoft.Extensions.Caching.Memory (>= 8.0.1)
- Microsoft.Extensions.Caching.StackExchangeRedis (>= 8.0.22)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 8.0.22)
- Polly (>= 8.6.4)
- Scrutor (>= 4.2.2)
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 |
|---|---|---|
| 9.1.2 | 384 | 11/16/2025 |
| 9.1.1 | 167 | 11/15/2025 |
| 9.0.2 | 242 | 11/10/2025 |
| 9.0.1 | 137 | 11/9/2025 |
| 9.0.0 | 190 | 11/5/2025 |
| 8.8.0 | 191 | 11/2/2025 |
| 8.7.1 | 192 | 10/29/2025 |
| 8.7.0 | 182 | 10/27/2025 |
| 8.6.2 | 182 | 10/27/2025 |
| 8.6.1 | 145 | 10/25/2025 |
| 8.6.0 | 128 | 10/25/2025 |
| 8.6.0-rc4 | 127 | 10/25/2025 |
| 8.6.0-rc3 | 154 | 10/24/2025 |
| 8.6.0-rc2 | 190 | 10/23/2025 |
| 8.6.0-rc1 | 186 | 10/20/2025 |
| 8.5.1 | 109 | 10/18/2025 |
| 8.5.0 | 121 | 10/18/2025 |
| 8.4.2 | 169 | 10/16/2025 |
| 8.4.1 | 168 | 10/16/2025 |
| 8.4.0 | 161 | 10/16/2025 |
| 8.3.5 | 165 | 10/15/2025 |
| 8.3.4 | 167 | 10/15/2025 |
| 8.3.3 | 171 | 10/15/2025 |
| 8.3.1 | 156 | 10/14/2025 |
| 8.3.0 | 153 | 10/14/2025 |
| 8.3.0-rc4 | 163 | 10/14/2025 |
| 8.3.0-rc3 | 157 | 10/13/2025 |
| 8.3.0-rc2 | 154 | 10/13/2025 |
| 8.3.0-rc1 | 179 | 10/13/2025 |
| 8.2.0-rc9.1 | 132 | 10/13/2025 |
| 8.2.0-rc3 | 147 | 10/12/2025 |
| 8.2.0-rc10 | 173 | 10/13/2025 |
| 8.2.0-rc1 | 102 | 10/11/2025 |
| 5.0.1-preview.0.1 | 136 | 10/8/2025 |