2012-08-23 14 views
7

Próbuję zachłannie załadować właściwości klasy pochodnej w modelu Entity Framework.Jak korzystać z funkcji Include() po funkcji OfType()?

czytam all overtheplace że muszę najpierw filtrować zestaw z OfType() przed tym właściwości z include():

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

nie wiem jak się to include() do pracy ale ponieważ w moim przypadku osoby to DbSet, OfType() zwraca IQueryable, a IQueryable nie definiuje metody Include().

+0

Mam nadzieję, że ten link pomoże http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/2130796d-a2fe-4137-af18-d56480748384 – Boomer

Odpowiedz

15

Place to:

using System.Data.Entity; 

do swojej listy za pomocą, a potem będzie można używać Include rozszerzenie metody rodzinę od DbExtensions Klasa:

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); 

Przyjmują IQueryable jako pierwszy argument i są też silnie napisane, co jest lepsze, niż Include(String).

+2

Ah! Dzięki, pomyślałem, że to prawdopodobnie metoda rozszerzenia. Naprawdę chciałbym, żeby VS sprawiło, że przestrzeń nazw była wykrywalna i/lub że ludzie dodawali użytek w swoich próbkach :) –

+0

@XavierPoinas: Całkowicie się z tobą zgadzam, to również mnie zdezorientowało. – Dennis

+0

@XavierPoinas Zostałem nawrócony na Resharper z tego (między innymi) powodów. Resharper zasugeruje metody rozszerzania w celu uzupełnienia brakującej luki w sugestiach Visual Studios w systemie intellisense. Zupełnie się z Tobą zgadzam! –

Powiązane problemy