|
| 1 | +# SharpCoreDB Examples |
| 2 | + |
| 3 | +Deze directory bevat praktijkvoorbeelden voor het gebruik van SharpCoreDB in verschillende scenario's. |
| 4 | + |
| 5 | +## 📁 Directory Structuur |
| 6 | + |
| 7 | +``` |
| 8 | +examples/ |
| 9 | +├── sync/ # Synchronisatie voorbeelden |
| 10 | +│ ├── SyncExample.cs # Basis Dotmim.Sync integratie |
| 11 | +│ └── CrossPlatformSyncExample.cs # Cross-platform sync (SQL Server, PostgreSQL, etc.) |
| 12 | +└── README.md # Deze file |
| 13 | +``` |
| 14 | + |
| 15 | +## 🔄 Synchronisatie Voorbeelden |
| 16 | + |
| 17 | +### Basis Synchronisatie |
| 18 | +**Bestand:** `sync/SyncExample.cs` |
| 19 | + |
| 20 | +Toont hoe SharpCoreDB te synchroniseren met SQL Server via Dotmim.Sync: |
| 21 | + |
| 22 | +```csharp |
| 23 | +using Dotmim.Sync; |
| 24 | +using Dotmim.Sync.SqlServer; |
| 25 | +using SharpCoreDB.Provider.Sync; |
| 26 | + |
| 27 | +// Configureer SharpCoreDB als lokale provider |
| 28 | +var sharpcoredbProvider = new SharpCoreDBSyncProvider("Data Source=local.db"); |
| 29 | + |
| 30 | +// Configureer SQL Server als remote provider |
| 31 | +var sqlServerProvider = new SqlSyncProvider("Server=mssql;Database=sync;Trusted_Connection=True;"); |
| 32 | + |
| 33 | +// Maak sync agent |
| 34 | +var agent = new SyncAgent(sharpcoredbProvider, sqlServerProvider); |
| 35 | + |
| 36 | +// Definieer tabellen om te syncen |
| 37 | +var tables = new string[] { "Users", "Orders", "Products" }; |
| 38 | + |
| 39 | +// Voer bidirectionele sync uit |
| 40 | +var result = await agent.SynchronizeAsync(tables); |
| 41 | + |
| 42 | +Console.WriteLine($"Geüpdatet: ↑{result.TotalChangesUploaded} ↓{result.TotalChangesDownloaded}"); |
| 43 | +``` |
| 44 | + |
| 45 | +### Cross-Platform Synchronisatie |
| 46 | +**Bestand:** `sync/CrossPlatformSyncExample.cs` |
| 47 | + |
| 48 | +Demonstreert synchronisatie met meerdere database types: |
| 49 | + |
| 50 | +```csharp |
| 51 | +// Sync met PostgreSQL |
| 52 | +var postgresProvider = new PostgreSqlSyncProvider("Server=postgres;Database=sync;User Id=user;Password=pass;"); |
| 53 | +var pgAgent = new SyncAgent(sharpcoredbProvider, postgresProvider); |
| 54 | +await pgAgent.SynchronizeAsync(tables); |
| 55 | + |
| 56 | +// Sync met MySQL |
| 57 | +var mysqlProvider = new MySqlSyncProvider("Server=mysql;Database=sync;Uid=user;Pwd=pass;"); |
| 58 | +var mysqlAgent = new SyncAgent(sharpcoredbProvider, mysqlProvider); |
| 59 | +await mysqlAgent.SynchronizeAsync(tables); |
| 60 | +``` |
| 61 | + |
| 62 | +## 🚀 Hoe Uitvoeren |
| 63 | + |
| 64 | +### 1. Dependencies Installeren |
| 65 | + |
| 66 | +```bash |
| 67 | +# Voor basis sync |
| 68 | +dotnet add package SharpCoreDB.Provider.Sync |
| 69 | +dotnet add package Dotmim.Sync.Core |
| 70 | +dotnet add package Dotmim.Sync.SqlServer |
| 71 | + |
| 72 | +# Voor cross-platform sync |
| 73 | +dotnet add package Dotmim.Sync.PostgreSql |
| 74 | +dotnet add package Dotmim.Sync.MySql |
| 75 | +dotnet add package Dotmim.Sync.Sqlite |
| 76 | +``` |
| 77 | + |
| 78 | +### 2. Voorbeeld Project Aanmaken |
| 79 | + |
| 80 | +```bash |
| 81 | +# Maak nieuw console project |
| 82 | +dotnet new console -n SharpCoreDBSyncExample |
| 83 | +cd SharpCoreDBSyncExample |
| 84 | + |
| 85 | +# Voeg dependencies toe |
| 86 | +dotnet add package SharpCoreDB.Provider.Sync |
| 87 | +dotnet add package Dotmim.Sync.Core |
| 88 | +dotnet add package Dotmim.Sync.SqlServer |
| 89 | + |
| 90 | +# Kopieer voorbeeld code |
| 91 | +# (Kopieer code van sync/SyncExample.cs) |
| 92 | +``` |
| 93 | + |
| 94 | +### 3. Uitvoeren |
| 95 | + |
| 96 | +```bash |
| 97 | +dotnet run |
| 98 | +``` |
| 99 | + |
| 100 | +## 🎯 Use Cases |
| 101 | + |
| 102 | +### 1. Lokale Eerst Architectuur (AI Agenten) |
| 103 | +- SharpCoreDB voor lokale opslag |
| 104 | +- Sync met cloud database voor backup/deling |
| 105 | +- Offline-first capability |
| 106 | + |
| 107 | +### 2. IoT Edge Computing |
| 108 | +- SharpCoreDB op edge devices |
| 109 | +- Periodieke sync met centrale database |
| 110 | +- Offline data buffering |
| 111 | + |
| 112 | +### 3. Mobile Apps |
| 113 | +- Lokale SharpCoreDB database |
| 114 | +- Sync met backend bij connectiviteit |
| 115 | +- Conflict resolution voor offline changes |
| 116 | + |
| 117 | +### 4. Enterprise Data Warehousing |
| 118 | +- Operationele data in SharpCoreDB |
| 119 | +- Sync met centrale data warehouse |
| 120 | +- ETL processen ondersteunen |
| 121 | + |
| 122 | +## 📋 Vereisten |
| 123 | + |
| 124 | +- **.NET 10** of hoger |
| 125 | +- **SharpCoreDB** v1.4.0+ |
| 126 | +- **Dotmim.Sync** v1.3.0+ |
| 127 | +- Database-specifieke providers (SQL Server, PostgreSQL, etc.) |
| 128 | + |
| 129 | +## 🔧 Configuratie |
| 130 | + |
| 131 | +### Connection Strings |
| 132 | + |
| 133 | +```csharp |
| 134 | +// SharpCoreDB (lokaal) |
| 135 | +"Data Source=local.db" |
| 136 | + |
| 137 | +// SQL Server |
| 138 | +"Server=mssql;Database=sync;Trusted_Connection=True;" |
| 139 | + |
| 140 | +// PostgreSQL |
| 141 | +"Server=postgres;Database=sync;User Id=user;Password=pass;" |
| 142 | + |
| 143 | +// MySQL |
| 144 | +"Server=mysql;Database=sync;Uid=user;Pwd=pass;" |
| 145 | +``` |
| 146 | + |
| 147 | +### Sync Opties |
| 148 | + |
| 149 | +```csharp |
| 150 | +var options = new SyncOptions |
| 151 | +{ |
| 152 | + BatchSize = 1000, // Verwerk in batches |
| 153 | + UseBulkOperations = true, // Gebruik bulk operaties |
| 154 | + ConflictResolutionPolicy = ConflictResolutionPolicy.ServerWins, |
| 155 | + UseCompression = true, // Comprimeer data |
| 156 | + MaxRetries = 3 // Retry logica |
| 157 | +}; |
| 158 | +``` |
| 159 | + |
| 160 | +## 🐛 Troubleshooting |
| 161 | + |
| 162 | +### Veelvoorkomende Problemen |
| 163 | + |
| 164 | +#### Connection Timeouts |
| 165 | +```csharp |
| 166 | +// Verhoog timeouts |
| 167 | +var options = new SyncOptions |
| 168 | +{ |
| 169 | + CommandTimeout = TimeSpan.FromMinutes(10), |
| 170 | + BulkCopyTimeout = TimeSpan.FromMinutes(15) |
| 171 | +}; |
| 172 | +``` |
| 173 | + |
| 174 | +#### Grote Datasets |
| 175 | +```csharp |
| 176 | +// Gebruik kleinere batches |
| 177 | +var options = new SyncOptions |
| 178 | +{ |
| 179 | + BatchSize = 500, |
| 180 | + UseCompression = true |
| 181 | +}; |
| 182 | +``` |
| 183 | + |
| 184 | +#### Conflicten |
| 185 | +```csharp |
| 186 | +// Configureer conflict resolution |
| 187 | +var options = new SyncOptions |
| 188 | +{ |
| 189 | + ConflictResolutionPolicy = ConflictResolutionPolicy.ClientWins |
| 190 | +}; |
| 191 | +``` |
| 192 | + |
| 193 | +## 📚 Meer Informatie |
| 194 | + |
| 195 | +- **[Dotmim.Sync Documentatie](https://dotmim-sync.readthedocs.io/)** |
| 196 | +- **[SharpCoreDB Sync Gids](docs/sync/README.md)** |
| 197 | +- **[Distributed Features](docs/distributed/README.md)** |
| 198 | + |
| 199 | +## 🤝 Bijdragen |
| 200 | + |
| 201 | +Voel je vrij om meer voorbeelden toe te voegen! Gebruik dezelfde structuur: |
| 202 | + |
| 203 | +1. Maak subdirectory voor use case (`examples/[category]/`) |
| 204 | +2. Voeg `[ExampleName].cs` bestand toe |
| 205 | +3. Update deze README |
| 206 | +4. Test het voorbeeld |
| 207 | + |
| 208 | +**Voorbeelden horen thuis in `examples/`, niet in `src/`!** |
0 commit comments