Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
A DataSet classe e as classes relacionadas são tecnologias herdadas do .NET Framework do início dos anos 2000 que permitem que os aplicativos trabalhem com dados na memória enquanto os aplicativos são desconectados do banco de dados. As tecnologias são especialmente úteis para aplicativos que permitem que os usuários modifiquem dados e persistam as alterações no banco de dados. Embora os conjuntos de dados sejam uma tecnologia comprovadamente bem-sucedida, a abordagem recomendada para novos aplicativos .NET é usar o Entity Framework Core. O Entity Framework fornece uma maneira mais natural de trabalhar com dados tabulares como modelos de objeto e tem uma interface de programação mais simples.
Este passo a passo demonstra como salvar dados em uma transação usando o System.Transactions namespace. Neste passo a passo, você criará um aplicativo do Windows Forms. Você usará o Assistente de Configuração da Fonte de Dados para criar um conjunto de dados para duas tabelas no banco de dados de exemplo Northwind. Você adicionará controles associados a dados a um formulário do Windows e modificará o código do botão salvar do BindingNavigator para atualizar o banco de dados dentro de um TransactionScope.
Pré-requisitos
Para concluir este tutorial, você precisa das cargas de trabalho de desenvolvimento e armazenamento e processamento de dados do .NET instaladas no Visual Studio. Para instalá-los, abra do Instalador do Visual Studio e escolha Modificar (ou Mais>Modificar) ao lado da versão do Visual Studio que você deseja modificar. Confira Modificar o Visual Studio.
Este passo a passo usa o SQL Server Express LocalDB e o banco de dados de exemplo Northwind.
Se você não tiver o SQL Server Express LocalDB, instale-o na página de download do SQL Server Express ou por meio do Instalador do Visual Studio. No Instalador do Visual Studio, SQL Server Express LocalDB pode ser instalado como parte do workload de desenvolvimento .NET para desktop ou como um componente individual.
Instale o banco de dados de exemplo Northwind seguindo estas etapas:
No Visual Studio, abra a janela Pesquisador de Objetos do SQL Server. (O Pesquisador de Objetos do SQL Server é instalado como parte da carga de trabalho de armazenamento e processamento de dados no Instalador do Visual Studio.) Expanda o nó do SQL Server . Clique com o botão direito do mouse na instância do LocalDB e selecione Nova Consulta.
Uma janela do editor de consultas é aberta.
Copie o script Transact-SQL da Northwind para sua área de transferência. Esse script T-SQL cria o banco de dados Northwind do zero e o preenche com dados.
Cole o script T-SQL no editor de consultas e, em seguida, escolha o botão Executar.
Após um curto período de tempo, a consulta termina de ser executada e o banco de dados Northwind é criado.
Criar um aplicativo do Windows Forms
A primeira etapa é criar um aplicativo do Windows Forms (.NET Framework).
No Visual Studio, no menu Arquivo, selecione Novo>Projeto.
Expanda o Visual C# ou o Visual Basic no painel esquerdo e selecione a Área de Trabalho do Windows.
No painel do meio, selecione o tipo de projeto de Aplicativo do Windows Forms .
Nomeie o projeto SavingDataInATransactionWalkthrough e escolha OK.
O projeto SavingDataInATransactionWalkthrough é criado e adicionado ao Gerenciador de Soluções.
Criar uma fonte de dados de banco de dados
Esta etapa usa o Assistente de Configuração da Fonte de Dados para criar uma fonte de dados com base nas tabelas Customers e Orders no banco de dados de exemplo Northwind.
Para abrir a janela Fontes de Dados , no menu Dados , selecione Mostrar Fontes de Dados.
Na janela Fontes de Dados , selecione Adicionar Nova Fonte de Dados para iniciar o Assistente de Configuração da Fonte de Dados.
Na tela Escolher um Tipo de Fonte de Dados , selecione Banco de Dados e selecione Avançar.
Na tela Escolher Conexão de Dados , siga um destes procedimentos:
Se uma conexão de dados com o banco de dados de exemplo Northwind estiver disponível na lista suspensa, selecione-a.
- ou -
Selecione Nova Conexão para iniciar a caixa de diálogo Adicionar/Modificar Conexão e criar uma conexão com o banco de dados Northwind.
Se o banco de dados exigir uma senha, selecione a opção para incluir dados confidenciais e selecione Avançar.
Na tela Salvar cadeia de conexão no arquivo de configuração do aplicativo, selecione Avançar.
Expanda o nó Tabelas na tela Escolher Objetos do Banco de Dados.
Selecione as tabelas
CustomerseOrders, e em seguida, selecione Concluir.O NorthwindDataSet é adicionado ao seu projeto e as tabelas
CustomerseOrdersaparecem na janela Fontes de Dados.
Adicionar controles ao formulário
Você pode criar os controles associados a dados arrastando itens da janela Fontes de Dados para seu formulário.
Na janela Fontes de dados, expanda o nó Clientes.
Arraste o nó principal Clientes da janela Fontes de Dados para Form1.
Um DataGridView controle e uma barra de ferramentas (BindingNavigator) para navegar em registros aparecem no formulário. Um NorthwindDataSet,
CustomersTableAdapter, BindingSource e BindingNavigator aparecem na bandeja de componentes.Arraste o nó Pedidos relacionado (não o nó principal Pedidos, mas o nó da tabela filho relacionado abaixo da coluna Fax) para o formulário abaixo de ClientesDataGridView.
Um DataGridView aparece no formulário. Um
OrdersTableAdaptere BindingSource aparecem na bandeja de componentes.
Adicionar uma referência ao assembly System.Transactions
As transações usam o System.Transactions namespace. Uma referência de projeto ao assembly system.transactions não é adicionada por padrão, portanto, você precisa adicioná-lo manualmente.
Para adicionar uma referência ao arquivo DLL System.Transactions
No menu Projeto, selecione Adicionar Referência.
Selecione System.Transactions (na
.NETguia) e selecione OK.Uma referência a System.Transactions é adicionada ao projeto.
Modificar o código no botão SaveItem do BindingNavigator
Para a primeira tabela que entra em seu formulário como padrão, o código é adicionado ao evento click do botão salvar no BindingNavigator. Você precisa adicionar código manualmente para atualizar quaisquer tabelas adicionais. Para este passo a passo, refatoramos o código de salvamento existente do manipulador de eventos de clique do botão salvar. Também criamos mais alguns métodos para fornecer funcionalidades de atualização específicas com base em se a linha precisa ser adicionada ou excluída.
Para modificar o código de salvamento gerado automaticamente
Selecione o botão Salvar no CustomersBindingNavigator (o botão com o ícone de disco disquete).
Substitua o método
CustomersBindingNavigatorSaveItem_Clickpelo seguinte código:private void customersBindingNavigatorSaveItem_Click(object sender, EventArgs e) { UpdateData(); } private void UpdateData() { this.Validate(); this.customersBindingSource.EndEdit(); this.ordersBindingSource.EndEdit(); using (System.Transactions.TransactionScope updateTransaction = new System.Transactions.TransactionScope()) { DeleteOrders(); DeleteCustomers(); AddNewCustomers(); AddNewOrders(); updateTransaction.Complete(); northwindDataSet.AcceptChanges(); } }
A ordem para reconciliar alterações aos dados relacionados é a seguinte:
Exclua registros filho. (Nesse caso, exclua registros da
Orderstabela.)Exclua registros pai. (Nesse caso, exclua registros da
Customerstabela.)Insira registros pai. (Nesse caso, insira registros na
Customerstabela.)Insira registros filho. (Nesse caso, insira registros na
Orderstabela.)
Para excluir pedidos existentes
Adicione o seguinte
DeleteOrdersmétodo ao Form1:private void DeleteOrders() { NorthwindDataSet.OrdersDataTable deletedOrders; deletedOrders = (NorthwindDataSet.OrdersDataTable) northwindDataSet.Orders.GetChanges(DataRowState.Deleted); if (deletedOrders != null) { try { ordersTableAdapter.Update(deletedOrders); } catch (System.Exception ex) { MessageBox.Show("DeleteOrders Failed"); } } }
Para excluir clientes existentes
Adicione o seguinte
DeleteCustomersmétodo ao Form1:private void DeleteCustomers() { NorthwindDataSet.CustomersDataTable deletedCustomers; deletedCustomers = (NorthwindDataSet.CustomersDataTable) northwindDataSet.Customers.GetChanges(DataRowState.Deleted); if (deletedCustomers != null) { try { customersTableAdapter.Update(deletedCustomers); } catch (System.Exception ex) { MessageBox.Show("DeleteCustomers Failed"); } } }
Para adicionar novos clientes
Adicione o seguinte
AddNewCustomersmétodo ao Form1:private void AddNewCustomers() { NorthwindDataSet.CustomersDataTable newCustomers; newCustomers = (NorthwindDataSet.CustomersDataTable) northwindDataSet.Customers.GetChanges(DataRowState.Added); if (newCustomers != null) { try { customersTableAdapter.Update(newCustomers); } catch (System.Exception ex) { MessageBox.Show("AddNewCustomers Failed"); } } }
Para adicionar novos pedidos
Adicione o seguinte
AddNewOrdersmétodo ao Form1:private void AddNewOrders() { NorthwindDataSet.OrdersDataTable newOrders; newOrders = (NorthwindDataSet.OrdersDataTable) northwindDataSet.Orders.GetChanges(DataRowState.Added); if (newOrders != null) { try { ordersTableAdapter.Update(newOrders); } catch (System.Exception ex) { MessageBox.Show("AddNewOrders Failed"); } } }
Executar o aplicativo
Pressione F5 para executar o aplicativo.