Retroceder   Foros del Web > Programación para sitios web > .NET > web forms

Respuesta
 
Herramientas Desplegado
Antiguo 04-jun-2007, 02:27   #1 (permalink)
ferblaca está en el buen camino
 
Fecha de Ingreso: mayo-2004
Mensajes: 85
.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!
ferblaca está desconectado   Responder Citando
Antiguo 04-jun-2007, 14:02   #2 (permalink)
(Desactivado)
Developer9 Developer9
 
Avatar de Developer9
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.202
Enviar un mensaje por MSN a Developer9
Re: .NET y Transcacciones

Cuando dices " necesito controlar las Transcciones " exactamente a que te refieres? A que no tengan errores?
Developer9 está desconectado   Responder Citando
Antiguo 04-jun-2007, 14:23   #3 (permalink)
Yaraher tiene algunos puntos positivos de karma
 
Avatar de Yaraher
 
Fecha de Ingreso: abril-2007
Ubicación: Lima, Perú
Mensajes: 248
Enviar un mensaje por MSN a Yaraher Enviar un mensaje por Yahoo  a Yaraher Enviar un mensaje por Skype™ a Yaraher
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.
Yaraher está desconectado   Responder Citando
Antiguo 05-jun-2007, 00:41   #4 (permalink)
ferblaca está en el buen camino
 
Fecha de Ingreso: mayo-2004
Mensajes: 85
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.
ferblaca está desconectado   Responder Citando
Antiguo 05-jun-2007, 08:13   #5 (permalink)
(Desactivado)
Developer9 Developer9
 
Avatar de Developer9
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.202
Enviar un mensaje por MSN a Developer9
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
Developer9 está desconectado   Responder Citando
Antiguo 06-jun-2007, 09:57   #6 (permalink)
ferblaca está en el buen camino
 
Fecha de Ingreso: mayo-2004
Mensajes: 85
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.
ferblaca está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 21:46.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93