# pets87/cdcsqlmonitor architecture

> Architecture diagram of the GitHub repository pets87/cdcsqlmonitor, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/pets87/cdcsqlmonitor
- Repository: https://github.com/pets87/cdcsqlmonitor

## Overview

CDCSqlMonitor is a .NET library for polling SQL Server changes through either Change Tracking (CT) or Change Data Capture (CDC). A consumer configures and starts the chosen monitor, which polls SQL Server, builds change results, and dispatches data or error events back to the consumer. CT additionally supports table registration and in-code table setup; CDC returns column values and can expose raw captured rows. The monitor implementations were sampled; some event and model relationships are inferred from their declared types and documented API.

Main entry points: [`CDCSqlMonitor/CT/Monitor.cs`](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CT/Monitor.cs) (CT Monitor), [`CDCSqlMonitor/CDC/Monitor.cs`](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CDC/Monitor.cs) (CDC Monitor), [`CDCSqlMonitor/CT/EventArgs/DataChangedEventArgs.cs`](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CT/EventArgs/DataChangedEventArgs.cs) (CT Change Events), [`CDCSqlMonitor/CT/EventArgs/ErrorEventArgs.cs`](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CT/EventArgs/ErrorEventArgs.cs) (CT Error Events)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ct["Change Tracking"]
  node_ctmonitor["CT Monitor<br/>[Monitor.cs]"]
  node_cttables["Table Config<br/>[MonitorTable.cs]"]
  node_ctentities["CT Change Records<br/>[Entity.cs]"]
  node_ctevents["CT Change Events"]
  node_cterrors["CT Error Events<br/>[ErrorEventArgs.cs]"]
  node_ctsql[("SQL Server CT")]
end

subgraph group_cdc["Change Data Capture"]
  node_cdcmonitor["CDC Monitor<br/>[Monitor.cs]"]
  node_cdcmodel["CDC Raw Rows<br/>[CDCModel.cs]"]
  node_cdcentities["CDC Change Records<br/>[Entity.cs]"]
  node_cdcevents["CDC Change Events"]
  node_cdcerrors["CDC Error Events<br/>[ErrorEventArgs.cs]"]
  node_cdcsql[("SQL Server CDC")]
end

subgraph group_contracts["Event Contracts"]
end

node_consumer(("Library Consumer"))

node_consumer -->|"configures and starts"| node_ctmonitor
node_ctmonitor -->|"stores table settings"| node_cttables
node_ctmonitor -->|"enables CT tables"| node_ctsql
node_ctmonitor -->|"polls changes"| node_ctsql
node_ctsql -->|"returns key changes"| node_ctmonitor
node_ctmonitor -->|"builds records"| node_ctentities
node_ctmonitor -->|"dispatches changes"| node_ctevents
node_ctevents -->|"delivers change batch"| node_consumer
node_ctmonitor -->|"dispatches errors"| node_cterrors
node_cterrors -->|"delivers error"| node_consumer
node_consumer -->|"configures and starts"| node_cdcmonitor
node_cdcmonitor -->|"polls captured changes"| node_cdcsql
node_cdcsql -->|"returns captured rows"| node_cdcmonitor
node_cdcmonitor -->|"maps raw rows"| node_cdcmodel
node_cdcmonitor -->|"builds change records"| node_cdcentities
node_cdcmonitor -->|"dispatches changes"| node_cdcevents
node_cdcevents -->|"delivers change batch"| node_consumer
node_cdcmonitor -->|"dispatches errors"| node_cdcerrors
node_cdcerrors -->|"delivers error"| node_consumer

click node_ctmonitor "https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CT/Monitor.cs"
click node_cttables "https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CT/Models/MonitorTable.cs"
click node_ctentities "https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CT/Models/Entity.cs"
click node_ctevents "https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CT/EventArgs/DataChangedEventArgs.cs"
click node_cterrors "https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CT/EventArgs/ErrorEventArgs.cs"
click node_cdcmonitor "https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CDC/Monitor.cs"
click node_cdcmodel "https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CDC/Models/CDCModel.cs"
click node_cdcentities "https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CDC/Models/Entity.cs"
click node_cdcevents "https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CDC/EventArgs/DataChangedEventArgs.cs"
click node_cdcerrors "https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CDC/EventArgs/ErrorEventArgs.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ctmonitor,node_cttables,node_ctentities,node_ctevents,node_cterrors,node_ctsql toneBlue
class node_cdcmonitor,node_cdcmodel,node_cdcentities,node_cdcevents,node_cdcerrors,node_cdcsql toneAmber
class node_consumer toneIndigo
```

## Components

### Change Tracking

- [CT Monitor](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CT/Monitor.cs): `CDCSqlMonitor/CT/Monitor.cs`
- [Table Config](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CT/Models/MonitorTable.cs): `CDCSqlMonitor/CT/Models/MonitorTable.cs`
- [CT Change Records](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CT/Models/Entity.cs): `CDCSqlMonitor/CT/Models/Entity.cs`
- [CT Change Events](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CT/EventArgs/DataChangedEventArgs.cs): `CDCSqlMonitor/CT/EventArgs/DataChangedEventArgs.cs`
- [CT Error Events](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CT/EventArgs/ErrorEventArgs.cs): `CDCSqlMonitor/CT/EventArgs/ErrorEventArgs.cs`
- **SQL Server CT**

### Change Data Capture

- [CDC Monitor](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CDC/Monitor.cs): `CDCSqlMonitor/CDC/Monitor.cs`
- [CDC Raw Rows](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CDC/Models/CDCModel.cs): `CDCSqlMonitor/CDC/Models/CDCModel.cs`
- [CDC Change Records](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CDC/Models/Entity.cs): `CDCSqlMonitor/CDC/Models/Entity.cs`
- [CDC Change Events](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CDC/EventArgs/DataChangedEventArgs.cs): `CDCSqlMonitor/CDC/EventArgs/DataChangedEventArgs.cs`
- [CDC Error Events](https://github.com/pets87/cdcsqlmonitor/blob/main/CDCSqlMonitor/CDC/EventArgs/ErrorEventArgs.cs): `CDCSqlMonitor/CDC/EventArgs/ErrorEventArgs.cs`
- **SQL Server CDC**

### Other components

- **Library Consumer**

## Connections

- Library Consumer → CT Monitor: configures and starts
- CT Monitor → Table Config: stores table settings
- CT Monitor → SQL Server CT: enables CT tables
- CT Monitor → SQL Server CT: polls changes
- SQL Server CT → CT Monitor: returns key changes
- CT Monitor → CT Change Records: builds records
- CT Monitor → CT Change Events: dispatches changes
- CT Change Events → Library Consumer: delivers change batch
- CT Monitor → CT Error Events: dispatches errors
- CT Error Events → Library Consumer: delivers error
- Library Consumer → CDC Monitor: configures and starts
- CDC Monitor → SQL Server CDC: polls captured changes
- SQL Server CDC → CDC Monitor: returns captured rows
- CDC Monitor → CDC Raw Rows: maps raw rows
- CDC Monitor → CDC Change Records: builds change records
- CDC Monitor → CDC Change Events: dispatches changes
- CDC Change Events → Library Consumer: delivers change batch
- CDC Monitor → CDC Error Events: dispatches errors
- CDC Error Events → Library Consumer: delivers error
