Как использовать Include() после OfType()?

Я пытаюсь загрузить свойства производного класса в модели Entity Framework.

Я прочитал всегда < href="https://stackoverflow.com/questions/5189268">место, в котором я должен сначала отфильтровать набор с помощью OfType(), прежде чем включать свойства с помощью Include():

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

Я не знаю, как заставить этот Include() работать, потому что в моем случае Persons — это DbSet, OfType() возвращает IQueryable, а IQueryable не определяет метод Include().


person Xavier Poinas    schedule 23.08.2012    source источник
comment
Надеюсь, что эта ссылка поможет социальным. msdn.microsoft.com/forums/en-US/adodotnetentityframework/   -  person Boomer    schedule 23.08.2012


Ответы (1)


Поместите это:

using System.Data.Entity;

в свой список использования, и после этого вы сможете использовать Include семейство методов расширения из DbExtensions:

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

Они принимают IQueryable в качестве первого аргумента, а есть и строго типизированные, что лучше, чем Include(String).

person Dennis    schedule 23.08.2012
comment
Ах! Спасибо, я думал, что это, вероятно, метод расширения. Я действительно хочу, чтобы VS сделал пространство имен доступным для обнаружения и / или чтобы люди включали использование в свои образцы :) - person Xavier Poinas; 23.08.2012
comment
@XavierPoinas: полностью согласен с вами, это меня тоже смутило в первый раз. - person Dennis; 23.08.2012
comment
@XavierPoinas По этой (среди прочего) причине я перешел на Resharper. Resharper предложит методы расширения, чтобы заполнить этот пробел в предложениях Visual Studios в intellisense. Абсолютно согласна с тобой! - person The Senator; 25.08.2015
comment
@TheSenator На самом деле VS 2015 теперь тоже так делает, так что теперь я очень счастлив :-) - person Xavier Poinas; 27.08.2015
comment
@XavierPoinas: правда. В конечном счете, VS убьет R#. :) - person Dennis; 27.08.2015