Foros del Web » Programando para Internet » ASPX (.net) »

.NET y Transcacciones

Estas en el tema de .NET y Transcacciones en el foro de ASPX (.net) en Foros del Web. Hola ! tengo una aplicación WEB con dos proyectos de clases que corresponden a los proyectos de Negocio y datos que son los que utilizo ...
  #1 (permalink)  
Antiguo 04/06/2007, 02:27
 
Fecha de Ingreso: mayo-2004
Mensajes: 85
Antigüedad: 20 años, 8 meses
Puntos: 1
.NET y Transcacciones

Hola !

tengo una aplicación WEB con dos proyectos de clases que corresponden a los proyectos de Negocio y datos que son los que utilizo desde el proyecto WEB para hacer los accesos a BBDD (oracle) para obtener,insertar,modificar,borrar.

Pues bien, necesito controlar las Transcciones de las consultas de datos que hago desde la página WEB sin utilizar COM+. Cual es la mejor forma de hacerlo?

Saludos!
  #2 (permalink)  
Antiguo 04/06/2007, 14:02
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 8 meses
Puntos: 47
Re: .NET y Transcacciones

Cuando dices " necesito controlar las Transcciones " exactamente a que te refieres? A que no tengan errores?
  #3 (permalink)  
Antiguo 04/06/2007, 14:23
Avatar de Yaraher  
Fecha de Ingreso: abril-2007
Ubicación: Lima, Perú
Mensajes: 262
Antigüedad: 17 años, 8 meses
Puntos: 9
Re: .NET y Transcacciones

Supongo que se refiere a la parte donde comprueba si las operaciones se realizan cumpliendo el modelo ACID.

Si no me equivoco, uno de los Application Blocks del Enterprise Suite de MS está orientado a Transacciones. Lo utilicé hace casi tres o cuatro años, pero me parece que todavía está ahí, y te permite control tipo Rollback, Commit y similares sobre lo que trabajen tus componentes transaccionales.
  #4 (permalink)  
Antiguo 05/06/2007, 00:41
 
Fecha de Ingreso: mayo-2004
Mensajes: 85
Antigüedad: 20 años, 8 meses
Puntos: 1
Re: .NET y Transcacciones

Hola y gracias por responder,

me refiero a controlar las transacciones de manera que si borro datos de una tabla y en el siguiente acceso a datos intento borrar otroa registros y me da error, pues entonces que la primera inserción no se realice, es decir, que no se produzca el commit.

Tengo un proyecto web y dos proyectos VB de clases con los que hago el acceso a datos.

Os pongo un ejemplo:

Parte WEB:

<html> ....
<script runat=server>...
i = obj.Borrar(g_empCodigo, m_grcCodigo, m_prdCodigo, g_idiCodigo)
...
</script>...
</html>


Parte Negocio (akí intento controlar las transacciones):
************************************************
Public Function Borrar(ByVal in_empCodigo As String, ByVal in_grcCodigo As String, ByVal in_prdCodigo As String, ByVal in_idiCodigo As String) As Integer

Using scope As New System.Transactions.TransactionScope()
Try
//hace el borrado de la primera tabla
Borrar = m_Obj_Idi.Borrar(in_empCodigo,in_grcCodigo,in_prdC odigo, "")
//en este borrado da error por FK a otra tabla
Borrar = m_Obj.Borrar(in_empCodigo, in_grcCodigo, in_prdCodigo)

scope.Complete()

Catch Err As Exception
scope.Dispose()
End Try
End Using
End Function
************************************************** **

Me está pasando lo siguiente, cuando ejecuto la anterior función desde WEB me hace la primera consulta, pero en la segunda me está dando una excepción pq intento borrar un registro con una clave ajena a otra tabla (es lógico que salte excepción) por lo que no pasa por la instrucción scope.Complete() y aún así no controla la transacción dejando borrada el primer registro ...

Sabéis pq puede ser?

saludos.
  #5 (permalink)  
Antiguo 05/06/2007, 08:13
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 8 meses
Puntos: 47
Re: .NET y Transcacciones

Tienes que crear ejecutar todas tus sentencias sql dentro de una transacción.

Debes de crear un procedimiento almacenado donde pongas toditos los insert, update, delete y al inicio le pones BEGIN TRAN y al final le pones COMMIT TRAN

Y despues de cada insert, update o delete poner:

Código:
IF (@@error <> 0)
BEGIN
	ROLLBACK TRAN				
	RETURN
END
Con ello si la sentencia tiene un error hace un rollback a las ejecuciones anteriores y sale

Siempre que inicies un BEGIN TRAN debes de hacer un commit tran o rollback tran porque en la transaccion las tablas que hayas afectado se bloquean y nadie más las puede acceder, y si la transacción no termina tus tablas quedarán bloqueadas

Mucha suerte
  #6 (permalink)  
Antiguo 06/06/2007, 09:57
 
Fecha de Ingreso: mayo-2004
Mensajes: 85
Antigüedad: 20 años, 8 meses
Puntos: 1
Re: .NET y Transcacciones

Al final lo he conseguido y al parecer era porque estaba usando la clase ADODB para crear los objetos connection,command .... ahora lo he hecho con la clase System.Data.Common.factory para crear los objetos y todo ha funcionado a la primera.

Gracias a todos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:02.