| | Asunto: | [cooperatorframework] Ayuda: como hacer esto | | Fecha: | 6 de Mayo, 2008 17:53:49 (+0200) | | Autor: | Andres_23 <rastasantos @.......com>
|
|
Saludos a todo el grupo. me gustaria saber como hacer el siguiene proceso. Aqui
les planteo el caso: tenemos las siguientes tablas y sus campos: (todo en Asp.Net
) cabecera : id_cabecera, monto_total detalle : id_cabecera,
id_detalle, precio_total sub_detalle : id_cabecera, id_detalle,
id_sub_detalle, precio_unitario. Resumiendo: la tabla cabecera tiene uno o muchs
detalles y cada detalle tiene uno o muchos subdetalles. Bien, ahora, para
insertar una nueva cabecera hago lo siguiente: //es solo un ejemplo secillo sin
muchos detalles. cabecera oCabecera = new cabecera(); /* inicio */ sub_detalle
oSubDetalle = new sub_detalle(); sub_detalleList listaSubDetalle = new
sub_detalleList(); oSubDetalle.id_sub_detalle = 1; oSubDetalle.precio_unitario =
10; listaSubDetalle.Add(oSubDetalle); oSubDetalle = new sub_detalle(); oSubDetalle.id_sub_detalle = 2; oSubDetalle.precio_unitario = 20; listaSubDetalle.Add(oSubDetalle);
detalle oDetalle = new detalle(); detalleList listaDetalle = new detalleList(); oDetalle.id_detalle = 1; oDetalle.precio_total = 30; oDetalle.sub_detalleCollection = listaSubDetalle; listaDetalle.Add(oDetalle); oCabecera.detalleCollection = listaDetalle; oCabecera.id_cabecera = 1; cabeceraMapper.Instance().Insert(oCabecera); /* fin
*/ //bueno hasta aki no hay problema, al menos eso creo. //el problema es cuando
kiero editar, lo hago de la siguiente manera: id_cabecera = 1 ; //el id del
registro que quiero actualizar cabecera oCabecera =
cabeceraMapper.Instance().GetOne(id_cabecera); //Este GetOne() me trae todo //los
detalles y todos los dubdetalles de la cabecera. //y repito el codigo desde la
linea /*inicio*/ hasta /* fin */ //luego elimino todos detalles y subdtetalles
de la cabecera sub_detalleMapper.Instance().DeleteBycabecera(id_cabecera); detalleMapper.Instance().DeleteBycabecera(id_cabecera); //Actualizo la
cabecera cabeceraMapper.Instance().Save(oCabecera);
EL problema esta en k el usuario
tiene la posibilidad de editar cuantas veces sea necesario, hasta un determinado
momento claro, entonces se va estar eliminado todos los detalles y volviendo a
insertar, no se, como que no me parece muy bien, y eso es lo que necesito saber
si hay alguna forma de hacerlo mejor, en todo cado como lo harian ustedes, gracias a todos por la ayuda, consejos, recomendaciones, etc, que me puedan
brindar...
|