2012-08-23 10 views
7

Sto cercando di caricare le proprietà di carico di una classe derivata in un modello Entity Framework.Come usare Include() dopo OfType()?

ho letto all overtheplace che devo filtrare prima il set con OfType() prima di includere le proprietà con include():

var persons = Context.Persons 
        .OfType<Employee>() 
        .Include("Compensation") 

non so come ottenere che include() per lavorare anche se, nel mio caso, People è un DbSet, OfType() restituisce un IQueryable e IQueryable non definisce un metodo Include().

+0

Spero che questo collegamento aiuti http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/2130796d-a2fe-4137-af18-d56480748384 – Boomer

risposta

15

Luogo questo:

using System.Data.Entity; 

nella vostra di utilizzare la lista, e dopo che si sarà in grado di utilizzare Include estensione metodi famiglia da DbExtensions classe:

public static IQueryable<T> Include<T, TProperty>(this IQueryable<T> source, Expression<Func<T, TProperty>> path) where T : class; 
    public static IQueryable<T> Include<T>(this IQueryable<T> source, string path) where T : class; 
    public static IQueryable Include(this IQueryable source, string path); 

Accettano IQueryable come primo argomento e ci sono anche quelli fortemente tipizzati, che è meglio, quindi Include(String).

+2

Ah! Grazie, ho pensato che fosse probabilmente un metodo di estensione. Spero davvero che VS abbia reso lo spazio dei nomi individuabile e/o che le persone includessero gli usi nei loro campioni :) –

+0

@XavierPoinas: completamente d'accordo con te, questo mi ha confuso anche la prima volta. – Dennis

+0

@XavierPoinas Sono stato convertito in Resharper per questo (tra gli altri) motivi. Resharper suggerirà metodi di estensione per colmare questa lacuna mancante nei suggerimenti di Visual Studios in intellisense. Totalmente d'accordo con te! –