Tiene un conjunto de datos tipeados con varias tablas relacionadas y relaciones definidas entre esas tablas. A medida que proceso un suministro de datos, agrego, modifico y elimino registros, luego llamo la actualización en cada tabla.Transacciones en Typed DataSets
Requests Reapprovals UserRole
RequestId ----- RequestId ----- RoleId
Reason RoleId ----/ UserId
La razón para utilizar un conjunto de datos con tipo es que tengo para comprobar los datos existentes para determinar si estoy añadiendo, modificando o eliminando registros ... así que necesito el volcado completo de todo lo que estoy trabajando con (la alternativa sería 10.000 consultas en contra de la base de datos mientras proceso los registros uno por uno).
Quiero soporte transaccional, pero no veo una manera de hacerlo con conjuntos de datos tipados. Por ejemplo, estoy creando una nueva solicitud cuando creo una nueva aprobación. Pero si la reaprobación no se actualiza, no quiero mantener la solicitud.
Poner las llamadas de actualización bajo TransactionScope
significaría que si falla cualquier registro, todos fallan. No es lo que quiero
¿Cómo puedo confirmar o revertir las filas relacionadas en un conjunto de datos tipado?
Puede ser que le interese saber que llamar a Update en un cuadro no, de hecho, enviar N consultas a la base de datos, una para cada registro va a actualizar/añadir/removiendo Por lo tanto, no está obteniendo mucho beneficio si llama a Update en una tabla o llama a Update cada vez que cambia una sola fila. (Puede haber algunos beneficios cuando se usa una opción de envío "masivo", pero no sé qué tan importante) Entonces, si bien puede usar su volcado total en memoria para determinar qué registros modificar, le sugiero que ajuste cada serie de acciones. para un registro en su propio alcance de transacción. – Pandincus
Sabía que las filas se actualizaban de una en una, y consideraba actualizar las filas de una en una mientras las modifico ... lo que me molestaba era llamar a Update() en la tabla, que verifica cada fila para ver si necesita actualizarse Lo que significa que estoy iterando más de 10.000 filas más de 10.000 veces para encontrar la fila que se ha actualizado. No estaba seguro de si ese rendimiento sería enorme o insignificante. –
Pandincus> Si quiere ingresar lo que dice como respuesta, lo aceptaré. Parece que mis elecciones son tomar el rendimiento al hacer lo que sugieres, o aceptar/rechazar los cambios del conjunto de datos como un todo: (Gracias! –