Carga diferida

Cuando cargamos un vendedor, haciendo algo como esto: SalesPerson person = session.Get<SalesPerson>(1); la colección Sales no será cargada. Esto es porque, por defecto,  las colecciones son cargadas de manera diferida. Esto es, que no tocaremos la base de datos hasta que la información sea específicamente solicitada (ej. Podemos acceder a la propiedad Sales). Podemos invalidar este comportamiento cambiando la configuración lazy=”false” en el elemento bag.

 

La otra, más interesante, estrategia de carga implementada por NHibernate está en las entidades en sí mismas. Frecuentemente querrás agregar una referencia a un objeto sin tener que cargar el objeto real desde la base de datos. Por ejemplo, cuando agregamos una venta (Sales) a un vendedor (SalesPerson), necesitamos especificar el modelo (Model), pero no queremos cargar cada propiedad / lo único que queremos es obtener el Id para poder guardarlo en la columna ModelId de la tabla Sales. Cuando usas session.Load<T> (id) NHibernate cargara un proxy del objeto actual (a menos de que especifiques lazy=”false” en el elemento clase). Hasta donde puede importarte, el proxy se comporta exactamente igual que el objeto real, pero ningún dato será extraído de la base de datos hasta la primera vez que lo solicitas. Esto hace posible escribir el siguiente código:

Sale sale = new Sale(session.Load<Model>(1), DateTime.Now, 46000.00);

salesPerson.AddSales(sale);

session.SaveOrUpdate(salesPerson);

Sin tener que tocar siquiera la base de datos para cargar el objeto Model.

 

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted in:   Tags:

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading



IT Builder

Conoce mas de los servicios de IT Builder y la forma en la que podemos apoyarte a construir software de clase mundial

* Procesos para el desarrollo de software (CMMI, MSF, TSP, PSP, Moprosoft).
* Habilitacion de ambientes colaborativos y automatizacion con Visual Studio Team System.
* Arquitectura de aplicaciones bajo tecnologia Microsoft.
* Construccion de aplicaciones .NET.

www.itbuilder.com.mx
Imaginalo, nosotros lo construimos !

Calendar

«  February 2012  »
MoTuWeThFrSaSu
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011
View posts in large calendar

MVP

MVP Factor


Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2012 ITB - Gabriel Oliva C.