Logo UGIdotNET

Fetch plan tipizzato con Entity Framework

La sintassi offerta out of the box da Entity Framework 1.0 per impostare il fetch plan è, essendo basata sull'uso di semplici stringhe, prona ad errori poichè, ad esempio, il cambio del nome di una proprietà in una entità del domain model comporterà il fallimento di tutti i fetch plan che referenziano la suddetta proprietà. E' però possibile, avvalendosi degli extension methods, implementare anche per questo O/RM una sintassi "type safe" simile a quella offerta da LINQ 2 SQL. La seguente classe:

public static class ObjectQueryExtensions
{
    public static ObjectQuery<T> Include<T>(this ObjectQuery<T> query, Expression<Func<T, object>> subSelector)
    {
        return query.Include(((subSelector.Body as MemberExpression).Member as PropertyInfo).Name);
    }
}

Permetterà di impostare (ipotizzando una classe Order che esponga una proprietà Items di tipo IList<OrderItem>) il fetch plan con la sintassi:

ObjectQuery<Order> query = domain.OrderSet.Include(o => o.Items);
IList<Order> orders = (from o in query select o).ToList();

Technorati tags: 
Autore: Andrea Saltarello
Data: 01 dicembre 2008
Ultimo aggiornamento: 30 novembre 2008
Categorie:  Data Access
Tag:  entity framework linq

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185