Si, Digamos que ademas en un sentido purista aceptar el codigo en los
listeners implica que el modelo de negocios este atado a la capa de
persistencia...algo que se trata de evitar en general...toda cosa que no
puedo terminar en el domino me da igual que sea un trigger an la base o un
eventlistener y trato de evitar el uso de cualquiera de estos, a favor de
DomainEvents...

Gustavo.

2010/1/20 Carlos Peix <[email protected]>

> Diego,
>
> Para que veas que soy un caballero: yo no disiento con vos. :-)
>
> Por supuesto que Diego tiene razon pero, conceptualmente, lo que señala es
> el equivalente a un store procedure (mas precisamente un trigger) escrito en
> C#.
>
> Puede funcionar pero no es recomendable en un diseño nuevo, desde cero. Al
> menos en mi opinion.
>
> ----------------------------------
> Carlos Peix
>
> 2010/1/20 Diego Mijelshon <[email protected]>
>
> Disiento con Carlos respecto de si es _posible_ hacer esto, aunque estoy de
>> acuerdo en que no es un muy buen diseño.
>>
>> Para lograr algo así, podrías usar un PostInsertEventListener que haga la
>> actualización.
>> Algo más o menos así (no testeado):
>>
>> void OnPostInsert(PostInsertEvent @event)
>> {
>>   var linea = @event.Entity as Linea;
>>   if (linea != null)
>>     @event.Session.CreateQuery("update Producto set Stock = Stock -
>> :cantidad where Id = :idProducto")
>>       .SetParameter("cantidad", linea.Cantidad)
>>       .SetParameter("idProducto", linea.Producto.Id)
>>       .ExecuteUpdate()
>> }
>>
>> Así y todo, estarías usando un event listener, que es una herramienta de
>> infraestructura de NHibernate para un concern específico de negocio, lo cual
>> tiene bastante mal olor.
>>
>>    Diego
>>
>>
>> 2010/1/20 Edgar Ramos <[email protected]>
>>
>>> Saludos a todos
>>>
>>>
>>> Como ejemplo similar el siguiente
>>>
>>> Tengo estas entidades, Venta, Linea (detalle de la venta), y Producto
>>> (con su stock), y requiero hacer lo siguiente
>>>
>>> Al momento de crear Una venta e ingresar su Detalle (Linea), me
>>> actualice el stock de cada uno de los productos (de Linea),
>>> basicamente stock=stock-(cantidad digitada)
>>>
>>> Puedo hacer esto ?
>>>
>>> Cualquier comentario es bienvenido
>>>
>>> Gracias nuevamente
>>>
>>> --
>>> Para escribir al Grupo, hágalo a esta dirección:
>>> [email protected]
>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>>
>>
>>
>> --
>> Para escribir al Grupo, hágalo a esta dirección:
>> [email protected]
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>
>
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>
-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a