DbSignal.Abstractions 1.0.2

dotnet add package DbSignal.Abstractions --version 1.0.2
                    
NuGet\Install-Package DbSignal.Abstractions -Version 1.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DbSignal.Abstractions" Version="1.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DbSignal.Abstractions" Version="1.0.2" />
                    
Directory.Packages.props
<PackageReference Include="DbSignal.Abstractions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DbSignal.Abstractions --version 1.0.2
                    
#r "nuget: DbSignal.Abstractions, 1.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DbSignal.Abstractions@1.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DbSignal.Abstractions&version=1.0.2
                    
Install as a Cake Addin
#tool nuget:?package=DbSignal.Abstractions&version=1.0.2
                    
Install as a Cake Tool

DbSignal.Abstractions

The contract. Depends on nothing.

This package defines what a change feed is. It contains no database code — reference it from a domain or contract project that must not drag a database driver along, then reference a provider package where the wiring happens.

public interface IChangeFeed : IAsyncDisposable
{
    FeedCapabilities Capabilities { get; }
    string ProviderName { get; }
    IAsyncEnumerable<ChangeBatch> ReadAsync(Checkpoint from, CancellationToken ct = default);
}

Capabilities, not lies

Databases are not equally good at reporting change. SQLite can only say "something in this file changed"; SQL Server names the individual rows and whether each was an insert, update or delete. A uniform API over that would have to either lie about SQLite or cripple the others down to its floor.

So every feed declares what it can actually do:

public sealed record FeedCapabilities(
    ChangeDetail Detail,          // DatabaseChanged < TableChanged < KeysChanged < RowImages
    bool DurableAcrossRestart,
    bool SurvivesDowntime,
    bool FiltersOwnWrites,
    bool RequiresProvisioning);

and consumers declare what they need. Asking for more than a provider offers fails at startup, with a message saying why — not quietly, six months later, when someone notices half the job was never being done.

Providers

Package Mechanism Detail
DbSignal.Sqlite PRAGMA data_version DatabaseChanged
DbSignal.SqlServer Change Tracking KeysChanged

Delivery guarantee

At-least-once. A crash between handling a batch and saving its checkpoint replays that batch, so handlers must be idempotent. Exactly-once is not achievable across these mechanisms, and claiming it would be a lie.

Targets net8.0 and netstandard2.0. MIT licensed. Source and full documentation.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on DbSignal.Abstractions:

Package Downloads
DbSignal.SqlServer

SQL Server change detection for DbSignal, via Change Tracking. Reports which rows changed, no matter which application wrote them. No triggers, no Service Broker.

DbSignal.Sqlite

SQLite change detection for DbSignal, via PRAGMA data_version. Detects writes made by other processes — external tools, scripts, a second application — with no schema changes and no setup.

DbSignal.Extensions.Hosting

Dependency-injection and background-service wiring for DbSignal. Register a feed and a handler; the library owns the loop, retries and checkpointing.

DbSignal.PostgreSql

PostgreSQL change detection for DbSignal, via logical replication. Streams the rows another application changed, with their before and after values. No triggers, no polling.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.2 166 8/27/2026
1.0.1 160 8/15/2026
1.0.0 152 8/7/2026
0.2.0 147 8/6/2026
0.1.0 131 8/6/2026