Trabalhando com esquemas de tabelas
Este tópico descreve as diversas maneiras de trabalhar com os esquemas de tabelas criados em bancos de dados cliente e pares.
Sincronização do cliente e do servidor
Durante a sessão de sincronização inicial de um cliente, o Sync Framework cria tabelas no banco de dados cliente. Para obter mais informações, consulte Como inicializar o banco de dados cliente e trabalhar com esquemas de tabela. Após a criação dessas tabelas, são permitidas algumas alterações de esquema.
O Sync Framework não propaga automaticamente as alterações de esquema do servidor para o cliente. Para obter informações sobre como manipular as alterações de esquema no servidor, consulte Implantando e controlando a versão de aplicativos. As seguintes alterações de esquema têm suporte no banco de dados cliente:
Descartar tabelas. O comportamento durante a próxima sincronização depende do valor especificado para CreationOption. Se você não quiser a tabela no cliente, remova-a de SyncTableCollection. Ao descartar uma tabela na qual o controle de alterações está habilitado, você também descartará a tabela do sistema que controla as operações de exclusão dessa tabela. Portanto, todas as operações de exclusão desde a última sincronização não são carregadas no servidor.
Adicionar novas colunas.
Descartar colunas de tabelas envolvidas na sincronização de instantâneo. Essa alteração não tem suporte em outros tipos de sincronização.
Adicionar, descartar e renomear índices.
Adicionar, descartar e renomear chaves primárias e outras restrições.
Modificar padrões.
Todas as outras alterações não têm suporte e podem causar falhas de sincronização.
Em alguns aplicativos, o esquema é diferente no cliente e no servidor. Os seguintes pontos resumem o comportamento de uma tabela e o conjunto de dados do ADO.NET que o Sync Framework usa para atualizar essa tabela no cliente:
Se o conjunto de dados contiver Coluna1 e Coluna2, e a tabela contiver Coluna1, Coluna2 e Coluna3: os valores da Coluna1 e da Coluna2 serão aplicados e a Coluna3 será definida como seu valor padrão ou NULL se ela não tiver um padrão.
Se o conjunto de dados contiver Coluna1, Coluna2 e Coluna3, e a tabela contiver Coluna1 e Coluna2: os valores da Coluna1 e da Coluna2 serão aplicados e a Coluna3 será ignorada.
Se o conjunto de dados contiver Coluna1, Coluna2 e Coluna3, e a tabela contiver Coluna1, Coluna2 e Coluna4: os valores da Coluna1 e da Coluna2 serão aplicados; a Coluna3 será definida como seu valor padrão ou NULL, se ela não tiver um padrão, e a Coluna4 será ignorada.
Sincronização ponto a ponto
A sincronização ponto a ponto não fornece a inicialização automática de bancos de dados pares nem cria uma infraestrutura de controle de alterações em cada par. Para obter informações sobre a inicialização de esquema e de dados, consulte "Inicializando um banco de dados de servidor" em Como configurar e executar a sincronização de colaboração (não SQL Server). Não há restrições em alterações de esquema para tabelas base em bancos de dados pares. No entanto, os aplicativos devem garantir que os comandos que selecionam e aplicam as alterações serão atualizados se ocorrerem quaisquer alterações de esquema. Por exemplo, se você adicionar uma coluna a uma tabela, o comando para inserir alterações nessa tabela deverá ser atualizado para incluir a nova coluna.
Em cenários ponto a ponto, o esquema poderá ser diferente entre bancos de dados pares. Por exemplo, um esquema da tabela no primeiro par pode usar nomes de coluna numéricos que não são fáceis de ler. Você pode usar os objetos DbSyncColumnMapping e DbSyncColumnMappingCollection para mapear as colunas para nomes mais amigáveis para outros pares.