Posts recientes

El contenido de este blog tiene una licencia Creative Commons.
Creative Commons

Consejos para mejorar el rendimiento de tu Entity Framework (VI)   

Cargar objetos con el EF.
Desde el framework puedes cargar relaciones usando  include. Por cada uno, el framework añadirá un join que puede originar consultas complejas, y que sean devueltas grandes cargas de datos. A este tipo de cargas se les llama "Eager loading".
Sin embargo, esto puede ser evitado usando el método Load para hacer "lazy or explicit loading”, que abre una conexión a base de datos para recuperar la información necesaria.
Así nos aseguramos de que la consulta  sólo ejecutará una petición a un objeto relacionado mediante una petición explícita.
Por ejemplo:
// Get a specified customer by contact ID.
Contact customer = context.Contact.Where("it.ContactID = @customerId", 
                   new ObjectParameter("customerId", customerId)).First();
// Load the orders for the customer
if (!customer.SalesOrderHeader.IsLoaded)
{
    customer.SalesOrderHeader.Load();
}
El código completo  de este ejemplo se  encuenta en este artículo del msdn de Microsoft.
 
Filtra los datos.
Cuando se usa este tipo de carga (con Load o con LoadWith) se reciben todos los datos asociados con la clave primaria, pero la mayoría de los casos se deben aplicar filtros adicionales. Para ello se usa el método  DataLoadOptions.AssociateWith, que toma el criterio al cargar los datos como parámetro y aplica la consulta.  
using (DataContext context = new DataContext())
{
  DataLoadOptions options = new DataLoadOptions();
  options.AssociateWith(cat=> cat.Products.Where(prod => !prod.Discontinued));
  context.LoadOptions = options;
}
 
 
Publicado  en  19/03/2010  por  Isabel Cabezas
0  Comentarios  |  Trackback Url  | 0  Enlaces a este post | Bookmark este post con:          
Etiquetas: ASP.NET, C#, Entity Framework, VS 2008
Technorati Tags: , , ,
 

Vinculos a este post

Comentarios