
Incorporation de la synchronisation des données dans les applications à l'aide de Visual Studio
Pour incorporer la synchronisation de données dans votre application, Visual Studio fournit un modèle Cache de base de données locale. Ce modèle est disponible en tant que nouveau modèle d'élément de projet. (Dans le menu Projet, cliquez sur Ajouter un nouvel élément.) Pour plus d'informations, consultez Comment : configurer la synchronisation de données dans une application.
Remarque : |
|---|
Le modèle Cache de base de données locale ne peut pas être ajouté directement à un projet Smart Device. Au lieu de cela, vous devez ajouter le Cache de base de données locale au WCF de couche intermédiaire ou au projet de service Web, puis fractionner les composants de synchronisation générés dans le projet Smart Device. Pour plus d'informations, consultez Applications occasionnellement connectées (Smart Devices). |
À partir de Visual Studio 2008 SP1, outre la boîte de dialogue Configurer la synchronisation des données, vous pouvez également utiliser l'Assistant Configuration de source de données pour configurer la synchronisation. Au cours de la configuration d'un groupe de données typé, sélectionnez l'option Activer la mise en cache de la base de données locale dans la page Choisir vos objets de base de données de l'Assistant. Pour plus d'informations, consultez Procédure pas à pas : création d'une application occasionnellement connectée à l'aide de l'Assistant Configuration de source de données.
L'ajout d'un Cache de base de données locale ouvre la boîte de dialogue Configurer la synchronisation des données. Vous pouvez utiliser cette boîte de dialogue pour indiquer des informations spécifiques à propos du client et du serveur afin d'installer les composants de synchronisation requis. Le cache de base de données locale utilise une base de données SQL Server Compact 3.5 sur le client pour stocker des données localement. Vous pouvez utiliser une base de données SQL Server Compact 3.5 existante comme cache de base de données locale. Si vous n'avez pas encore de base de données locale, vous pouvez utiliser la boîte de dialogue Configurer la synchronisation des données pour créer une base de données locale. Pour créer une base de données SQL Server Compact 3.5 locale, vous pouvez définir la connexion client (dans la boîte de dialogue Configurer la synchronisation des données) pour créer une base de données SQL Server Compact 3.5 à partir des tables sélectionnées dans Connexion serveur.
Remarque : |
|---|
La boîte de dialogue Configurer la synchronisation des données vous permet de configurer Microsoft Synchronization Services pour ADO.NET uniquement pour les scénarios de téléchargement. Cela signifie qu'après avoir configuré la synchronisation de données dans cette boîte de dialogue, Microsoft.Synchronization.Data.SyncAgent.Synchronize met à jour uniquement la base de données locale avec les modifications identifiées sur la base de données distante. Les modifications apportées aux données sur la base de données locale ne sont pas téléchargées sur la base de données distante. Une fois que vous avez configuré la synchronisation de données à l'aide de la boîte de dialogue Configurer la synchronisation des données, vous pouvez activer par programme les téléchargements (synchronisation bidirectionnelle) pendant la synchronisation. Pour plus d'informations, consultez Comment : configurer une base de données locale et distante pour la synchronisation bidirectionnelle. |
Configuration de la base de données distante pour la synchronisation
Pour que la synchronisation de données réussisse, il est nécessaire d'ajouter quelques éléments dans chaque table sur la base de données distante avec laquelle vous souhaitez effectuer la synchronisation. La boîte de dialogue Configurer la synchronisation des données crée des scripts SQL à exécuter sur la base de données distante afin de créer les objets nécessaires (les objets répertoriés dans le tableau ci-dessous). Tous les scripts SQL créés par le concepteur de synchronisation sont enregistrés dans un dossier SQLScripts dans votre projet.
Remarque : |
|---|
Les scripts SQL générés par la boîte de dialogue Configurer la synchronisation des données sont exécutés par défaut. Vous pouvez indiquer si vous souhaitez générer et exécuter les scripts en définissant l'option Génération de script de la boîte de dialogue Configurer les tables pour une utilisation hors connexion. Le comportement par défaut de la boîte de dialogue Configurer la synchronisation des données déclenche automatiquement l'exécution des scripts et met à jour la base de données distante à la fermeture de la boîte de dialogue. Désactivez la case à cocher Exécuter les scripts lorsque cette boîte de dialogue est fermée si vous ne souhaitez pas exécuter automatiquement les scripts. En outre, si la base de données distante dispose déjà des colonnes de suivi, des déclencheurs et des tables des éléments supprimés requis, aucun script n'est généré. En d'autres termes, si aucune modification de la base de données distante n'est requise, aucun script n'est créé. |
Le tableau suivant répertorie les éléments requis dans la base de données distante et fournit une explication pour chacun de ces éléments :
Ajouts à chaque table synchronisée sur la base de données distante | Explication |
|---|
Colonne LastEditDate | Cette colonne doit avoir la valeur DateTime ou TimeStamp dans chaque table qui est synchronisée. Cette valeur est comparée à la colonne LastEditDate sur le client pour identifier les enregistrements qui ont été modifiés sur le serveur depuis le dernier appel de synchronisation. |
Colonne CreationDate | Cette colonne doit avoir la valeur DateTime ou TimeStamp dans chaque table qui est synchronisée. Cette valeur est comparée à la colonne CreationDate sur le client pour identifier les enregistrements qui ont été ajoutés au serveur depuis le dernier appel de synchronisation. |
Table des éléments supprimés (NomTable_Deleted) | Les éléments sont déplacés vers cette table lorsqu'ils sont supprimés de la table sur le serveur de base de données. Cela permet d'identifier les enregistrements qui ont été supprimés du serveur depuis le dernier appel de synchronisation. Chaque table qui est synchronisée requiert une table des éléments supprimés pour effectuer le suivi des enregistrements supprimés de la table distante. |
DeletionTrigger (NomTable_DeletionTrigger) | Ce déclencheur s'exécute à chaque fois qu'un enregistrement est supprimé de la table de la base de données serveur. Les enregistrements supprimés sont déplacés vers la table des éléments supprimés. Ils sont déplacés vers la table des éléments supprimés car les enregistrements dans la base de données client qui ne sont pas dans la base de données serveur peuvent être traités comme des nouveaux enregistrements et être ajoutés à nouveau au serveur. Synchronization Services vérifie la table des éléments supprimés pour déterminer s'il doit supprimer un enregistrement supprimé de la base de données client au lieu de l'ajouter à nouveau à la base de données serveur. |
InsertTrigger (NomTable_InsertTrigger) | Ce déclencheur remplit la colonne CreationDate avec la date et l'heure actuelle lorsque de nouveaux enregistrements sont ajoutés. |
UpdateTrigger (NomTable_UpdateTrigger) | Ce déclencheur remplit la colonne LastEditDate avec la date et l'heure actuelle lorsque des enregistrements existants sont modifiés. |
Démarrage du processus de synchronisation à partir d'une application
Après avoir fourni les informations requises dans la boîte de dialogue Configurer la synchronisation des données, ajoutez le code dans votre application pour initialiser la synchronisation. Il est important de comprendre que la synchronisation des données met à jour la base de données locale et non pas la table dans le groupe de données ou tout autre objet dans votre application. N'oubliez pas de recharger votre source de données d'application avec les données mises à jour de la base de données locale. Par exemple, appelez la méthode TableAdapter.Fill pour charger la table de données du groupe de données avec les données mises à jour à partir de la base de données locale.
Ajoutez le code suivant dans votre application à l'endroit où vous souhaitez initialiser le processus de synchronisation :
' Call SyncAgent.Synchronize() to initiate the synchronization process.
' Synchronization only updates the local database, not your project's data source.
Dim syncAgent As LocalDataCache1SyncAgent = New LocalDataCache1SyncAgent()
Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize()
' Add code here to refill your application's data source
' with the updated data from the local database.
// Call SyncAgent.Synchronize() to initiate the synchronization process.
// Synchronization only updates the local database, not your project's data source.
LocalDataCache1SyncAgent syncAgent = new LocalDataCache1SyncAgent();
Microsoft.Synchronization.Data.SyncStatistics syncStats =
syncAgent.Synchronize();
// Add code to refill your application's data source
// with the updated data from the local database.