Hallo medetweakers,
Ik zal even mijn situatie uitleggen:
Ik zal even mijn situatie uitleggen:
- Ik heb een mobile device applicatie die synchroniseert met een centrale database server d.m.v. het Microsoft Sync Framework. De device applicatie maakt gebruik van een local database cache (een lokale "database", die naar het device wordt gekopieerd wanneer ik het project deploy).
- Wanneer je de local database cache aanmaakt kan je kiezen welke tabellen van de centrale database je wil gebruiken en worden er voor elke tabel twee kolommen aangemaakt met de titel "creationdate" en "updatedate". Deze kolommen worden gebruikt om wijzigingen na de laatste synchronisatie te kunnen herkennen.
- Ook worden er voor alle tabellen die in de cache zitten incrementalupdate-, incrementalinsert- en deletecommands aangemaakt in een gegenereerde codefile. Hier hoef je als user verder niets voor te doen, dat doet het Sync Framework allemaal automatisch. Deze commands zijn normale queries (zoals iedereen die wel kent binnen .NET) die elke tabel in de local database cache en de centrale database server controleren voor, zoals de namen al zeggen: inserts, updates en deletes. Dat wordt dus gedaan aan de hand van de hierboven genoemde kolommen "creationdate" en "updatedate".
- De commands die ik hierboven genoemd heb, zijn zelf aan te passen als je gegevens wil filteren. Stel: Je hebt een product tabel waarbij elk product in een bepaalde categorie zit en je wil alleen de producten van een bepaalde categorie synchroniseren (zeg kleding, en kleding heeft categorienummer 1). Dan zou je normaal gesproken een query krijgen in de trend van deze: "SELECT * FROM product WHERE categorie = 1". De commands kunnen ook op deze manier aangepast worden, door een SyncParameter toe te voegen. De query komt er dan zo uit te zien: "SELECT * FROM product WHERE categorie = @categorie". Zo kan dus de synchronisatie op een bepaalde manier "gemanipuleerd" worden door een filter toe te passen en krijg je alleen de records die jij in de database wil hebben.
- Ik heb een draadje op MSDN geopend, daar reageert vooralsnog niemand op. Ook heb ik al lang zitten googlen op het probleem dat ik hieronder beschrijf, maar niets gevonden wat lijkt op mijn probleem of in de buurt komt van een oplossing hiervoor, dus ik dacht ik open hier even een topic.