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