¿Puedo resolver con nhibernate esto o es un error en mi modelo?
Yo guardo una factura con su respectivo detalle, dentro de mi modelo
yo necesito generar un movimiento en inventario y por cada movimiento
guardar la referencia del detalle de la factura así:
Factura ==> Detalle ==> Movimiento
El proceso del movimiento al inventario es un paso intermedio al
momento de guardar-actualizar mi factura.
En mi modelo, el detalle de la factura no conoce los movimientos en el
inventario, pero el movimiento si conoce a que detalle de factura
pertenece.
¿Como identificar la referencia del detalle para insertarla en el
movimiento si todo se ejecuta en un solo request (Session-Per-Request)
y aun no conozco la referencia del detalle que se guardo en la base de
datos?
Uso Visitor como patron de diseño tomado del post de J. Rommaniello
http://jfromaniello.blogspot.com/2009/11/caso-practico-patron-visitor.html,
el proceso del movimiento lo realizo en un Visitor.
Muchas gracias por su ayuda.
--
Para escribir al Grupo, hágalo a esta dirección: NHibernat...@googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
Una cuestión pequeñita... ¿un evento de dominio == listeners de nh?
On 15 feb, 10:51, Gustavo Ringel <gustavo.rin...@gmail.com> wrote:
> No entiendo exactamente donde entra NH en la consullta.
> Es decir, el codigo que yo pienso para resolver eso al menos es
> independiente de la capa de persistencia, tambien los visitors de Jose son
> independientes de la capa de persistencia.
>
> Creo que NH no es un factor para la decision de negocio. Podrias
> transformarlo en un factor si quisieras usar Listeners o alguna cosa
> especifica de NH para guardar el movimiento.
>
> En mi caso el servicio que guarda la factura y los detalles llama al
> Dao/Repositorio que sabe guardar una factura y sus detalles y se genera un
> evento de dominio para cada detalle de factura.
>
> Otro componente recibe esos eventos y se encarga de guardar los movimientos.
>
> Los visitors de Jose hacen algo parecido a eso, pero creo que tambien Jose
> para esos casos favorece domain events hoy en dia :)
>
> Gustavo.
>
> 2010/2/15 Roberto Ramírez <jramirezle...@gmail.com>
>
>
>
> > Buenos días a todos.
>
> > ¿Puedo resolver con nhibernate esto o es un error en mi modelo?
>
> > Yo guardo una factura con su respectivo detalle, dentro de mi modelo
> > yo necesito generar un movimiento en inventario y por cada movimiento
> > guardar la referencia del detalle de la factura así:
>
> > Factura ==> Detalle ==> Movimiento
>
> > El proceso del movimiento al inventario es un paso intermedio al
> > momento de guardar-actualizar mi factura.
>
> > En mi modelo, el detalle de la factura no conoce los movimientos en el
> > inventario, pero el movimiento si conoce a que detalle de factura
> > pertenece.
>
> > ¿Como identificar la referencia del detalle para insertarla en el
> > movimiento si todo se ejecuta en un solo request (Session-Per-Request)
> > y aun no conozco la referencia del detalle que se guardo en la base de
> > datos?
>
> > Uso Visitor como patron de diseño tomado del post de J. Rommaniello
> >http://jfromaniello.blogspot.com/2009/11/caso-practico-patron-visitor...
Muchas gracias por la respuesta Gustavo, me queda claro lo que
Entonces a lo que veo es que me toca buscar sobre Domain Events para
resolver mi problema, dejando fuera a NH de esto... y pues Visitor ya
lo había entendido, pero al parecer no me servirá..
Saludos... =)
On 15 feb, 11:15, Gustavo Ringel <gustavo.rin...@gmail.com> wrote:
> No, mas bien algo como esto:
>
> http://www.udidahan.com/2009/06/14/domain-events-salvation/
>
> <http://www.udidahan.com/2009/06/14/domain-events-salvation/>Listeners de NH
> para algo que no es especifico de datos como la creacion de un movimiento
> quiere decir que a una regla de negocios la estas todavia atendiendo a nivel
> de datos.
>
> A mi gusto Listeners de NH se pueden usar para auditoria, tracing, o cosas
> que son especificas de la capa de datos y que el dia que tiras la capa de
> datos no tienen mas utilidad para tu negocio.
>
> Con Domain Events la idea es en el momento en que pasa algo avisar que paso
> por ejemplo DomainEvents.FacturaGuardada(new FacturaGuardadaEvent() {
> Factura = factura, Detalles = detallesList })
>
> Vos tenes en algun lado un SalvarMovimientosHandler :
> Handles<FacturaGuardadaEvent> y al atender el evento guarda un movimiento en
> la base por cada detalle.
>
> Gustavo.
>
> 2010/2/15 Roberto Ramírez <jramirezle...@gmail.com>
En mi modelo, el detalle de la factura no conoce los movimientos en el inventario, pero el movimiento si conoce a que detalle de factura pertenece.
¿Como identificar la referencia del detalle para insertarla en el movimiento si todo se ejecuta en un solo request (Session-Per-Request) y aun no conozco la referencia del detalle que se guardo en la base de datos?
Como dijo Gustavo, ahora voy mas por el camino de domainevents. La idea es parecida, pero me ahorro tener que especificar que tengo que inyectar.