si, tu aproximacion es buena, yo tambien devolvia por ej listas
readonly pero nhibernate no me dejaba, tuve que devolverlas asi como
estan y son susceptibles a ser modificadas, con respecto a que la
clase padre sea la responsable de crear y agregar a los hijos, tambien
es muy bueno, yo tambien hacia algo asi pero me faltaba algo, ajja tu
ejemplo me hizo acordar a uno de los patrones grasp el patron experto

On Apr 5, 7:39 am, Carlos Peix <[email protected]> wrote:
> Hola Raul,
>
> Te cuento como lo resuelvo yo, por ahi te sirve.
>
> No me gusta exponer las colecciones directamente, si tengo que
> exponerla devuelvo una coleccion read-only. Por este motivo, el codigo
> que agrega el elemento a la coleccion debe estar dentro de la clase,
> lo cual es bueno por varios motivos que podemos charlar en otro post.
> Entonces me queda un metodo asi, mas o menos:
>
> public cass Factura {
>    ...
>    public ItemFactura AgregarItem(Producto producto , int cantidad) {
>       ItemFactura item = new ItemFactura(this, producto, cantidad);
>       items.Add(item);
>    }
>    ...
>
> }
>
> El constructor de la clase ItemFactura seria asi:
>
> public class ItemFactura {
>    ...
>    public ItemFactura(Factura factura, Producto producto, int cantidad) {
>       this.factura = factura;
>       ...
>    }
>    ...
>
> }
>
> De esta manera queda armada la relacion bidireccional.
>
> Tener el codigo dentro de la clase Factura es bueno porque imaginate
> que tu cliente te dice: cuando agrego un producto que ya esta en la
> factura, no agregues un item, sumale la cantidad al que ya esta
> definido. Si tenes el codigo fuera, tendrias que revisar todos los
> lugares donde lo tenes, si lo tenes dentro, es mas facil.
>
>    public ItemFactura AgregarItem(Producto producto, int cantidad) {
>       ItemFactura itemExistente = BuscaItemPorProducto(producto);
>       if ( itemExistente != null ) {
>          itemExistente.AgregarCantidad(cantidad);
>       }
>       else {
>          ItemFactura item = new ItemFactura(this, producto, cantidad);
>          items.Add(item);
>       }
>    }
>
> Por identico motivo, no hago itemExistente += cantidad sino que llamo
> a un metodo para que tambien esa logica quede integrada donde
> pertenece.
>
> Un saludo
>
> Carlos Peix
>
> 2009/4/4 Raul Carlomagno <[email protected]>:
>
>
>
> > no lo agregue a la lista, pero a ese item le digo que va a pertenecer
> > a tal factura, no cuenta eso? tengo que asociarlo por ambos lados?
--~--~---------~--~----~------------~-------~--~----~
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