Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
La DataSet clase y las clases relacionadas son tecnologías heredadas de .NET Framework de principios de los años 2000 que permiten a las aplicaciones trabajar con datos en memoria mientras las aplicaciones están desconectadas de la base de datos. Las tecnologías son especialmente útiles para las aplicaciones que permiten a los usuarios modificar datos y conservar los cambios de nuevo en la base de datos. Aunque los conjuntos de datos son una tecnología probada de éxito, el enfoque recomendado para las nuevas aplicaciones .NET es usar Entity Framework Core. Entity Framework proporciona una manera más natural de trabajar con datos tabulares como modelos de objetos y tiene una interfaz de programación más sencilla.
En este tutorial se muestra cómo guardar datos en una transacción mediante el espacio de nombres System.Transactions. En este tutorial, creará una aplicación de Windows Forms. Utilizarás el Asistente para la Configuración del Origen de Datos para crear un dataset para dos tablas en la base de datos de ejemplo Northwind. Agregará controles vinculados a datos a un formulario de Windows, y modificará el código del botón Guardar del BindingNavigator para actualizar la base de datos dentro de un TransactionScope.
Prerrequisitos
Para completar este tutorial, necesita las cargas de trabajo de desarrollo de escritorio de .NET y almacenamiento y procesamiento de datos instaladas en Visual Studio. Para instalarlos, abra el Visual Studio Installer y elija Modificar (o Más>Modificar) junto a la versión de Visual Studio que desea modificar. Vea Modificación de Visual Studio.
En este tutorial se usa SQL Server Express LocalDB y la base de datos de ejemplo Northwind.
Si no tiene SQL Server Express LocalDB, instálelo desde la página de descarga de SQL Server Express o mediante el Instalador de Visual Studio. En el Instalador de Visual Studio, SQL Server Express LocalDB se puede instalar como parte de la carga de trabajo de desarrollo de escritorio de .NET o como componente individual.
Instale la base de datos de ejemplo Northwind siguiendo estos pasos:
En Visual Studio, abra la ventana Explorador de objetos de SQL Server (El Explorador de objetos de SQL Server se instala como parte de la carga de trabajo Almacenamiento y procesamiento de datos en el Instalador de Visual Studio). Expanda el nodo SQL Server . Haga clic con el botón derecho en la instancia de LocalDB y seleccione Nueva consulta.
Se abre una ventana del editor de consultas.
Copie el script Northwind Transact-SQL en su Portapapeles. Este script de T-SQL crea la base de datos Northwind desde cero y la rellena con datos.
Pegue el script T-SQL en el editor de consultas y, a continuación, elija el botón Ejecutar.
Después de un breve tiempo, la consulta finaliza la ejecución y se crea la base de datos Northwind.
Crear una aplicación de Windows Forms
El primer paso es crear una aplicación de Windows Forms (.NET Framework).
En Visual Studio, en el menú Archivo , seleccione Nuevo>proyecto.
Expanda Visual C# o Visual Basic en el panel izquierdo y, a continuación, seleccione Escritorio de Windows.
En el panel central, seleccione el tipo de proyecto Aplicación de Windows Forms .
Asigne al proyecto el nombre SavingDataInATransactionWalkthrough y, a continuación, elija Aceptar.
El proyecto SavingDataInATransactionWalkthrough se crea y se agrega al Explorador de soluciones.
Creación de un origen de datos de base de datos
En este paso se usa el Asistente para la Configuración del Origen de Datos para crear un origen de datos basado en las tablas Customers y Orders de la base de datos de ejemplo Northwind.
Para abrir la ventana Orígenes de datos , en el menú Datos , seleccione Mostrar orígenes de datos.
En la ventana Orígenes de datos , seleccione Agregar nuevo origen de datos para iniciar el Asistente para configuración del origen de datos.
En la pantalla Elegir un tipo de origen de datos, seleccione Base de datos y, a continuación, seleccione Siguiente.
En la pantalla Elegir la conexión de datos , realice una de las siguientes acciones:
Si hay disponible una conexión de datos a la base de datos de ejemplo Northwind en la lista desplegable, selecciónela.
O bien:
Seleccione Nueva conexión para iniciar el cuadro de diálogo Agregar o modificar conexión y crear una conexión a la base de datos Northwind.
Si la base de datos requiere una contraseña, seleccione la opción para incluir datos confidenciales y, a continuación, seleccione Siguiente.
En la pantalla Guardar cadena de conexión en el archivo de configuración de la aplicación , seleccione Siguiente.
En la pantalla Elegir los objetos de base de datos , expanda el nodo Tablas .
Seleccione las
Customerstablas yOrdersy, a continuación, seleccione Finalizar.NorthwindDataSet se agrega al proyecto y las
Customerstablas yOrdersaparecen en la ventana Orígenes de datos.
Adición de controles al formulario
Puede crear los controles enlazados a datos arrastrando elementos desde la ventana Orígenes de datos al formulario.
En la ventana Orígenes de datos , expanda el nodo Clientes .
Arrastre el nodo Clientes principal desde la ventana Orígenes de datos a Form1.
Un DataGridView control y una franja de herramientas (BindingNavigator) para navegar por los registros aparecen en el formulario. Un NorthwindDataSet,
CustomersTableAdapter, BindingSource y BindingNavigator aparecen en la bandeja de componentes.Arrastra el nodo relacionado de Pedidos (no el nodo principal de Pedidos, sino el nodo de la tabla secundaria relacionada que está debajo de la columna Fax) al formulario que se encuentra debajo de CustomersDataGridView.
En el formulario aparece una DataGridView. Un
OrdersTableAdaptery BindingSource aparecen en la bandeja de componentes.
Agregar una referencia al ensamblado System.Transactions
Las transacciones utilizan el espacio de nombres System.Transactions. Una referencia de proyecto al ensamblado system.transactions no se agrega de forma predeterminada, por lo que debe agregarla manualmente.
Para agregar una referencia al archivo DLL de System.Transactions
En el menú Proyecto, seleccione Agregar referencia.
Seleccione System.Transactions (en la
.NETpestaña) y, a continuación, seleccione Aceptar.Se agrega una referencia a System.Transactions al proyecto.
Modificar el código en el botón SaveItem de BindingNavigator
Para la primera tabla que se coloca en el formulario, el código se agrega de forma predeterminada al evento click del botón de guardar BindingNavigator. Debe agregar manualmente código para actualizar las tablas adicionales. Para este tutorial, refactorizamos el código de guardado existente fuera del controlador de eventos del botón de guardado. También se crean algunos métodos más para proporcionar funcionalidad de actualización específica en función de si es necesario agregar o eliminar la fila.
Para modificar el código de guardado generado automáticamente
Seleccione el botón Guardar en CustomersBindingNavigator (el botón con el icono de disco de disquete).
Reemplace el método
CustomersBindingNavigatorSaveItem_Clickcon el código siguiente: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(); } }
El orden de conciliación de los cambios en los datos relacionados es el siguiente:
Eliminar registros secundarios. (En este caso, elimine los registros de la
Orderstabla).Elimine los registros primarios. (En este caso, elimine los registros de la
Customerstabla).Inserte registros primarios. (En este caso, inserte registros en la
Customerstabla).Insertar registros secundarios. (En este caso, inserte registros en la
Orderstabla).
Para eliminar pedidos existentes
Agregue el método siguiente
DeleteOrdersa 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 eliminar los clientes existentes
Agregue el método siguiente
DeleteCustomersa 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 agregar nuevos clientes
Agregue el método siguiente
AddNewCustomersa 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 agregar nuevos pedidos
Agregue el método siguiente
AddNewOrdersa 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"); } } }
Ejecutar la aplicación
Presione F5 para ejecutar la aplicación.