Utilizzo degli schemi di tabella
In questo argomento vengono descritte diverse modalità di utilizzo degli schemi di tabella creati nei database client e peer.
Sincronizzazione client e server
Durante la sincronizzazione iniziale per un client, Sync Framework crea tabelle nel database client. Per ulteriori informazioni, vedere Procedura: inizializzare il database client e utilizzare lo schema della tabella. Dopo avere creato queste tabelle, sono consentite alcune modifiche dello schema.
Sync Framework non propaga automaticamente le modifiche dello schema dal server al client. Per informazioni sulla gestione delle modifiche dello schema nel server, vedere Distribuzione e controllo delle versioni delle applicazioni. Il database client supporta le modifiche dello schema seguenti:
Eliminazione di tabelle. Il comportamento durante la sincronizzazione successiva varierà in base al valore specificato per CreationOption. Se non si ritiene necessaria la presenza della tabella nel client, rimuoverla da SyncTableCollection. Eliminando una tabella con il rilevamento modifiche attivato, si elimina anche la tabella di sistema che registra le operazioni di eliminazione per tale tabella. Di conseguenza, qualsiasi operazione di eliminazione avvenuta a partire dall'ultima sincronizzazione non verrà caricata nel server.
Aggiunta di nuove colonne.
Eliminazione di colonne per le tabelle coinvolte nella sincronizzazione snapshot. Tale modifica non è supportata per gli altri tipi di sincronizzazione.
Aggiunta, eliminazione e rinominazione di indici.
Aggiunta, eliminazione e rinominazione delle chiavi primarie e di altri vincoli.
Modifica delle impostazioni predefinite.
Tutte le altre modifiche non sono supportate e possono causare errori di sincronizzazione.
In alcune applicazioni lo schema risulta diverso tra il client e il server. Di seguito viene riepilogato il comportamento per una tabella e il set di dati ADO.NET utilizzato da Sync Framework per aggiornare tale tabella nel client:
Se il set di dati contiene Column1 e Column2 e la tabella contiene Column1, Column2, e Column3, vengono applicati i valori in Column1 e Column2, mentre Column3 è impostato sul valore predefinito o su NULL se non esiste un valore predefinito.
Se il set di dati contiene Column1, Column2 e Column3 e la tabella contiene Column1 e Column2, vengono applicati i valori in Column1 e Column2 e Column3 viene ignorato.
Se il set di dati contiene Column1, Column2 e Column3 e la tabella contiene Column1 e Column2 e Column4, vengono applicati i valori in Column1 e Column2, Column3 viene impostato sul relativo valore predefinito o su NULL se non esiste un valore predefinito e Column4 viene ignorato.
Sincronizzazione peer-to-peer
La sincronizzazione peer-to-peer non fornisce l'inizializzazione automatica dei database peer né crea un'infrastruttura per il rilevamento delle modifiche in ogni peer. Per ulteriori informazioni sull'inizializzazione di dati e schemi, vedere "Inizializzazione di un database server" in Procedura: configurare ed eseguire la sincronizzazione in scenari di collaborazione (non SQL Server) Non esistono restrizioni sulle modifiche allo schema nelle tabelle di base dei database peer. È tuttavia necessario assicurarsi che i comandi per la selezione e l'applicazione delle modifiche vengano aggiornate ogni volta che si verifica una modifica dello schema. Se ad esempio si aggiunge una colonna a una tabella, è necessario aggiornare il comando per l'inserimento delle modifiche in quella tabella in modo che venga inclusa la nuova colonna.
Negli scenari peer-to-peer lo schema potrebbe variare tra database peer. Ad esempio, lo schema di una tabella nel primo peer potrebbe utilizzare nomi di colonne numerici di difficile lettura. È possibile utilizzare gli oggetti DbSyncColumnMapping e DbSyncColumnMappingCollection per eseguire il mapping delle colonne a nomi più intuitivi per altri peer.
Vedere anche
Concetti
Considerazioni per la progettazione e la distribuzione di applicazioni