Deze directory bevat praktijkvoorbeelden voor het gebruik van SharpCoreDB in verschillende scenario's.
examples/
├── CQRS/ # CQRS voorbeelden
│ └── OrderManagement.CqrsDemo/ # Explicit CQRS Order Management demo
│ ├── Program.cs
│ ├── OrderCqrsDemo.cs
│ └── README.md
├── EventSourcing/ # Event Sourcing voorbeelden
│ └── OrderManagement/ # Order Management System demo
│ ├── Program.cs
│ ├── OrderAggregate.cs
│ ├── OrderEvents.cs
│ └── README.md
├── sync/ # Synchronisatie voorbeelden
│ ├── SyncExample.cs # Basis Dotmim.Sync integratie
│ └── CrossPlatformSyncExample.cs # Cross-platform sync (SQL Server, PostgreSQL, etc.)
└── README.md # Deze file
Locatie: CQRS/OrderManagement.CqrsDemo/
Status: ✅ Complete
Niveau: Intermediate
Demonstreert:
- Expliciete command-side en query-side scheiding
- Command handlers via
SharpCoreDB.CQRS - Los write model en read model
- Read projector updates na command verwerking
- Duidelijke CQRS vs Event Sourcing vergelijking in output en README
Features:
- ✅ In-memory command dispatcher
- ✅ In-memory write repository
- ✅ In-memory read store + projector
- ✅ Query service op read model
- ✅ Side-by-side uitleg van verschillen met Event Sourcing
Hoe te draaien:
cd examples/CQRS/OrderManagement.CqrsDemo
dotnet runZie: CQRS Demo README voor gedetailleerde uitleg.
Locatie: EventSourcing/OrderManagement/
Status: ✅ Complete
Niveau: Intermediate
Demonstreert:
- Complete event sourcing pattern met SharpCoreDB.EventSourcing
- Order aggregate met lifecycle management
- Event replay en state reconstruction
- Global event feed voor projections
- Point-in-time queries (temporal queries)
- Per-stream sequence tracking
Features:
- ✅ Event-driven aggregate design
- ✅ Command/Event pattern
- ✅ Immutable events
- ✅ Complete audit trail
- ✅ Event versioning
- ✅ 5 demo scenarios
Hoe te draaien:
cd examples/EventSourcing/OrderManagement
dotnet runZie: Order Management README voor gedetailleerde uitleg.
Bestand: sync/SyncExample.cs
Toont hoe SharpCoreDB te synchroniseren met SQL Server via Dotmim.Sync:
using Dotmim.Sync;
using Dotmim.Sync.SqlServer;
using SharpCoreDB.Provider.Sync;
// Configureer SharpCoreDB als lokale provider
var sharpcoredbProvider = new SharpCoreDBSyncProvider("Data Source=local.db");
// Configureer SQL Server als remote provider
var sqlServerProvider = new SqlSyncProvider("Server=mssql;Database=sync;Trusted_Connection=True;");
// Maak sync agent
var agent = new SyncAgent(sharpcoredbProvider, sqlServerProvider);
// Definieer tabellen om te syncen
var tables = new string[] { "Users", "Orders", "Products" };
// Voer bidirectionele sync uit
var result = await agent.SynchronizeAsync(tables);
Console.WriteLine($"Geüpdatet: ↑{result.TotalChangesUploaded} ↓{result.TotalChangesDownloaded}");Bestand: sync/CrossPlatformSyncExample.cs
Demonstreert synchronisatie met meerdere database types:
// Sync met PostgreSQL
var postgresProvider = new PostgreSqlSyncProvider("Server=postgres;Database=sync;User Id=user;Password=pass;");
var pgAgent = new SyncAgent(sharpcoredbProvider, postgresProvider);
await pgAgent.SynchronizeAsync(tables);
// Sync met MySQL
var mysqlProvider = new MySqlSyncProvider("Server=mysql;Database=sync;Uid=user;Pwd=pass;");
var mysqlAgent = new SyncAgent(sharpcoredbProvider, mysqlProvider);
await mysqlAgent.SynchronizeAsync(tables);# Voor basis sync
dotnet add package SharpCoreDB.Provider.Sync
dotnet add package Dotmim.Sync.Core
dotnet add package Dotmim.Sync.SqlServer
# Voor cross-platform sync
dotnet add package Dotmim.Sync.PostgreSql
dotnet add package Dotmim.Sync.MySql
dotnet add package Dotmim.Sync.Sqlite# Maak nieuw console project
dotnet new console -n SharpCoreDBSyncExample
cd SharpCoreDBSyncExample
# Voeg dependencies toe
dotnet add package SharpCoreDB.Provider.Sync
dotnet add package Dotmim.Sync.Core
dotnet add package Dotmim.Sync.SqlServer
# Kopieer voorbeeld code
# (Kopieer code van sync/SyncExample.cs)dotnet run- SharpCoreDB voor lokale opslag
- Sync met cloud database voor backup/deling
- Offline-first capability
- SharpCoreDB op edge devices
- Periodieke sync met centrale database
- Offline data buffering
- Lokale SharpCoreDB database
- Sync met backend bij connectiviteit
- Conflict resolution voor offline changes
- Operationele data in SharpCoreDB
- Sync met centrale data warehouse
- ETL processen ondersteunen
- .NET 10 of hoger
- SharpCoreDB v1.4.0+
- Dotmim.Sync v1.3.0+
- Database-specifieke providers (SQL Server, PostgreSQL, etc.)
// SharpCoreDB (lokaal)
"Data Source=local.db"
// SQL Server
"Server=mssql;Database=sync;Trusted_Connection=True;"
// PostgreSQL
"Server=postgres;Database=sync;User Id=user;Password=pass;"
// MySQL
"Server=mysql;Database=sync;Uid=user;Pwd=pass;"var options = new SyncOptions
{
BatchSize = 1000, // Verwerk in batches
UseBulkOperations = true, // Gebruik bulk operaties
ConflictResolutionPolicy = ConflictResolutionPolicy.ServerWins,
UseCompression = true, // Comprimeer data
MaxRetries = 3 // Retry logica
};// Verhoog timeouts
var options = new SyncOptions
{
CommandTimeout = TimeSpan.FromMinutes(10),
BulkCopyTimeout = TimeSpan.FromMinutes(15)
};// Gebruik kleinere batches
var options = new SyncOptions
{
BatchSize = 500,
UseCompression = true
};// Configureer conflict resolution
var options = new SyncOptions
{
ConflictResolutionPolicy = ConflictResolutionPolicy.ClientWins
};Voel je vrij om meer voorbeelden toe te voegen! Gebruik dezelfde structuur:
- Maak subdirectory voor use case (
examples/[category]/) - Voeg
[ExampleName].csbestand toe - Update deze README
- Test het voorbeeld
Voorbeelden horen thuis in examples/, niet in src/!