Demonstra Passo a passo: Adicionando um cache local do banco de dados a um aplicativo de N-tier
Um local database cache, no contexto do Visual Studio, é um banco de dados SQL Server Compact 3.5 que está configurado para sincronizar dados com um banco de dados remoto usando Microsoft Synchronization Services for ADO.NET.Essa explicação fornece instruções passo a passo para adicionar um banco de dados SQL Server Compact 3.5 ao aplicativo criado no tópico Demonstra Passo a passo: Criando um aplicativo de dados N-tier.
Durante esta explicação passo a passo, você aprenderá a executar as seguintes tarefas:
Adicionar um item de cache de banco de dados local a um projeto.
Configurar a sincronização de dados.
Incorporar operações de sincronização no serviço de dados existente.
Modificar o código que carrega os dados para que ele recupere a tabela Clientes do cache de banco de dados local.
Adicionar código para iniciar o processo de sincronização.
Pré-requisitos
Para concluir essa explicação passo a passo, você precisa do seguinte:
A solução e projetos associados criados no Demonstra Passo a passo: Criando um aplicativo de dados N-tier.
Acesso ao banco de dados de exemplo Northwind.Para obter mais informações, consulte Como: Instalar bancos de dados de exemplo.
Observação: |
---|
Seu computador pode mostrar diferentes nomes ou localizações para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações do Visual Studio. |
Abrindo a solução NTierWalkthrough
Para abrir a solução NTierWalkthrough
No menu File, aponte para Open, clique em Project/Solution e em seguida, navegue até o local do arquivo NTierWalkthrough.sln.
Observação: O arquivo NTierWalkthrough.sln é criado no Demonstra Passo a passo: Criando um aplicativo de dados N-tier tópico e é um pré-requisito para concluir esta explicação passo a passo. Conclua o tópico Demonstra Passo a passo: Criando um aplicativo de dados N-tier, salvando todos os projetos quando tiver terminado, se ainda não tiver feito isso.
Adicionando caching de banco de dados local para NTierWalkthrough
Como um cache de banco de dados local é um banco de dados SQL Server Compact 3.5 que está localizado no cliente, adicione a cache de banco de dados local para o projeto PresentationTier.Como essa explicação passo a passo mostra como fazer o cache da tabela Clientes, você irá nomear o cache de banco de dados local como CustomersCache.
Observação: |
---|
Neste explicação passo a passo , o cache do banco de dados local é denominado CustomersCache porque ela usa somente a tabela Customers , mas várias tabelas podem ser adicionadas ao cache de banco de dados local. |
Para adicionar caching de dados locais para a camada de apresentação
Em Solution Explorer, clique com o botão direito do mouse em PresentationTier e clique em Add New Item.
Clique no modelo Local Database Cache.
Tipo CustomersCache o Nome.
Clique em Adicionar.
A caixa de diálogo Configure Data Synchronization abre.
Configurando a sincronização de dados.
Para configurar a sincronização de dados, selecione a conexão de dados para o servidor e as tabelas que você quer armazenar em cache localmente em seu aplicativo.Para essa explicação passo a passo, configure a conexão com o servidor para a versão SQL Server do banco de dados Northwind e adicione a tabela Clientes para o cache local.Além disso, porque você está adicionando o cache do banco de dados local para um aplicativo de várias camadas, você deve conjunto as opções avançadas para gerar os componentes de sincronização do servidor em um projeto separado: DataService.
Para configurar a sincronização de dados em um aplicativo de n camadas
Configure o Server Connection para a versão SQL Server do banco de dados Northwind.
Clique no botão Add para abrir a caixa de diálogo Configure Tables for Offline Use.
Selecione a caixa de seleção associada com a tabela Customers e clique em OK.(Deixe os valores padrão).
Clique em Advanced.
Na lista Server project location, selecione DataService.
Clique em OK.
Os componentes de sincronização são gerados, os dados são sincronizados pela primeira vez (o banco de dados local é criado no projeto e preenchido com dados), e o Assistente de Configuração de Fonte de Dados abre.
Selecione a tabela Customers e, em seguida, selecione a caixa de seleção associada a ele na página Choose Your Database Objects.
Digite LocalNorthwindCustomers para DataSet name e clique em Finish.
Ativando sincronização no serviço de dados existente
Os componentes de sincronização gerados foram adicionados ao projeto DataService, mas eles ainda têm de ser implementados pelo serviço.O SyncContract gerado contém as informações que o serviço necessita.Essas informações aparecem como comentários no arquivo.Copie as informações necessárias para a seção apropriada do arquivo App.config do serviço.
Para adicionar as informações de serviço para o arquivo App.config
Abra o arquivo CustomersCache.Server.SyncContract clicando duas vezes nele em Solution Explorer.
Localize a linha comentada que se assemelha ao seguinte:
<endpoint address ="" binding="wsHttpBinding" contract="DataService.ICustomersCacheSyncContract"/>
Copie a linha sem o caracter de comentário.
Abra o arquivo App.config do DataService clicando duas vezes nele em Solution Explorer.
Localize o comentário <!-- Metadata Endpoints -->.Adicione a linha que você copiou na etapa 3 abaixo da linha que começa com <endpoint address = "mex".
Digite um nome (por exemplo, SyncServer) para o endereço do ponto de extremidade que você acabou de colar para que tenham código semelhante ao seguinte:
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> <endpoint address ="SyncServer" binding="wsHttpBinding" contract="DataService.ICustomersCacheSyncContract"/>
On the Compilação menu, clicar Criar solução.
Para adicionar as operações de serviço de sincronização ao serviço de dados existente
Abra o arquivo CustomersCache.Server.SyncContract clicando duas vezes nele em Solution Explorer.
Alterar o nome de classe de CustomersCacheSyncService para Service1.Os exemplos de código a seguir mostram a declaração de classe como ela deve aparecer depois que você altera o nome da classe.(Usuários C# devem também alterar o nome do construtor.)
Partial Public Class Service1 Inherits Object Implements ICustomersCacheSyncContract ...
public partial class Service1 : object, ICustomersCacheSyncContract {...
Para usuários C#:
Altere a declaração de classe para Service1 (no arquivo Service1.cs) para ser um classe parcial para que a declaração seja parecida com o seguinte:
public partial class Service1 : object, ICustomersCacheSyncContract { private CustomersCacheServerSyncProvider _serverSyncProvider; public Service1() {...
On the Compilação menu, clicar Criar solução.
Como as operações de sincronização foram adicionadas ao serviço existente, você deve atualizar a referência de serviço no projeto PresentationTier.
Para atualizar a referência de serviço
Em Solution Explorer, localize ServiceReference1 no projeto PresentationTier.
Clique com o botão direito do mouse em ServiceReference1 e clique em Update Service Reference.
Modificando o formulário para carregar dados de clientes do cache local
O formulário na camada de apresentação atualmente obtém seus dados do serviço de dados.Portanto, você precisa modificar o código para carregar os dados a partir da cópia local da tabela Clientes no banco de dados SQL Server Compact 3.5.A tabela Pedidos ainda é carregada com dados retornados do DataService.
Para modificar o Form1 para carregar os dados do clientes a partir do cache de banco de dados local
Abra o Form1 no Editor de Códigos.
Substitua o cdigo Form1_Load existente pelo seguinte código:
Using DataSvc As New ServiceReference1.Service1Client ' Create a CustomersTableAdapter to load data from ' the local database cache. Dim CustomersTableAdapter As New LocalNorthwindCustomersTableAdapters.CustomersTableAdapter NorthwindDataSet.Customers.Merge(CustomersTableAdapter.GetData) NorthwindDataSet.Orders.Merge(DataSvc.GetOrders) End Using
using (ServiceReference1.Service1Client DataSvc = new ServiceReference1.Service1Client()) { LocalNorthwindCustomersTableAdapters.CustomersTableAdapter customersTableAdapter = new LocalNorthwindCustomersTableAdapters.CustomersTableAdapter(); northwindDataSet.Customers.Merge(customersTableAdapter.GetData()); northwindDataSet.Orders.Merge(DataSvc.GetOrders()); }
Testando o aplicativo
Execute o aplicativo.Os dados são recuperados do cache de banco de dados local e do serviço de dados.
Para testar o aplicativo
Pressione F5.
Os dados da tabela Clientes são recuperados a partir do banco de dados local e os dados da tabela Pedidos são recuperados a partir do serviço de dados.
Feche o formulário.
Sincronizando dados
Agora que a camada de apresentação está configurada para exibir as tabelas a partir das fontes corretas, a próxima etapa é adicionar código para iniciar a sincronização.Você adicionará um botão ao formulário para iniciar o processo de sincronização.
Para sincronizar dados entre o cache de banco de dados local e o banco de dados remoto
Abra o Form1 no modo de Design.
Clique na faixa de ferramentas no formulário e adicione um botão para a faixa de ferramentas.
Nomeie o botão SyncButton.
Clique duas vezes em SyncButton para criar um manipulador de eventos SyncButton_Click.
O código a seguir inicia o processo de sincronização.Adicione-o ao manipulador de eventos.
Dim syncAgent As CustomersCacheSyncAgent = New CustomersCacheSyncAgent Using syncClient As New ServiceReference1.CustomersCacheSyncContractClient syncAgent.RemoteProvider = New Microsoft.Synchronization.Data.ServerSyncProviderProxy(syncClient) Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize NorthwindDataSet.Customers.Merge(New LocalNorthwindCustomersTableAdapters.CustomersTableAdapter().GetData()) Dim syncSummary As String = "Total changes downloaded: " & _ syncStats.TotalChangesDownloaded.ToString() & vbCrLf & _ "Last successful synchronization: " & _ syncStats.SyncCompleteTime.ToString MessageBox.Show(syncSummary) End Using
CustomersCacheSyncAgent syncAgent = new CustomersCacheSyncAgent(); using (ServiceReference1.CustomersCacheSyncContractClient syncClient = new ServiceReference1.CustomersCacheSyncContractClient()) { syncAgent.RemoteProvider = new Microsoft.Synchronization.Data.ServerSyncProviderProxy(syncClient); Microsoft.Synchronization.Data.SyncStatistics syncStats = syncAgent.Synchronize(); northwindDataSet.Customers.Merge(new LocalNorthwindCustomersTableAdapters.CustomersTableAdapter().GetData()); string syncSummary = "Total changes downloaded: " + syncStats.TotalChangesDownloaded.ToString() + Environment.NewLine + "Last successful synchronization: " + syncStats.SyncCompleteTime.ToString(); MessageBox.Show(syncSummary); }
Os dados da tabela Clientes são recuperados a partir do banco de dados local e os dados da tabela Pedidos são recuperados a partir do serviço de dados.
Feche o formulário.
Testando o aplicativo
Para testar o aplicativo
Pressione F5.
Com o aplicativo em execução, use Server Explorer/Database Explorer (ou outra ferramenta de gerenciamento de banco de dados) para se conectar ao banco de dados servidor remoto e modificar alguns registros.
Em Server Explorer/ Database Explorer, localize a tabela Clientes no servidor de banco de dados remoto (não a conexão a Northwind.sdf).
Clique com o botão direito do mouse na tabela Clientes e clique em Show Table Data.
Modifique um ou mais registros e confirme a alteração.(Navegue fora da linha modificada).
Volte ao formulário e clique em SyncButton.
Verifique que as modificações ao banco de dados remoto estão sincronizadas com o banco de dados local e exibidas na grade.
Feche o formulário.(Pare a depuração.)
Próximas etapas
Dependendo dos requisitos do seu aplicativo, há várias etapas que você pode querer fazer depois de adicionar um cache de banco de dados local a um aplicativo de n camadas.Por exemplo, você poderia fazer os seguintes aprimoramentos para este aplicativo:
Adicionar validação ao conjunto de dados.Para obter mais informações, consulte: Demonstra Passo a passo: Adicionando validação a um aplicativo de dados N-tier.
Habilitar sincronização bidirecional.Para obter mais informações, consulte: Como: Configurar um local e remota banco de dados para sincronização bidirecional.
Consulte também
Tarefas
Como: Adicionar código para os conjuntos de dados em aplicativos de N-tier
Demonstra Passo a passo: Adicionando validação a um aplicativo de dados N-tier
Demonstra Passo a passo: Criando um aplicativo conectado ocasionalmente
Como: Configurar um local e remota banco de dados para sincronização bidirecional
Conceitos
Visão geral de aplicativo de dados de N camadas
Visão geral sobre aplicativos ocasionalmente conectados
SQL Server Compact 3.5 e Visual Studio