Материализовать запрос структуры объекта

Я использую Entity Framework 5 для запроса, как это:

var query = 
    from i in context.Instrument
    from p in i.InstrumentPerformance  // 1 : n
    where p.PortfolioScenarioID == 6013
    select i;

Я хочу сохранить запрашиваемое представление этого (отфильтрованного) запроса в памяти. В идеале я мог бы отключить контекст и по-прежнему запрашивать определенную коллекцию InstrumentPerformance, например, так:

var perf = query.First(i => i.InstrumentID == 407240).InstrumentPerformance;

Но это, конечно, не дает желаемого результата, так какперфорация» Объект будет содержать коллекцию InstrumentPerformance, которая содержит каждую присоединенную сущность InstrumentPerformance 1: n (независимо от того, является ли ее идентификатор PortfolioScenarioID 6013 или нет), и он будет извлекать эти сущности с помощью отложенной загрузки с context.ContextOptions.LazyLoadingEnabled = false (или контекстом, выполняемым вне области действия. ) запрос не даст ничего.

Так что это далеко от того, что я хочу получить: простое представление в памяти из исходного запроса. Я попытался воплотить их в словари и аналогичные подходы, но в итоге кодировал пользовательские объекты данных для результата, которого я хотел бы избежать.

Поэтому мой вопрос: каков рекомендуемый метод для получения такого представления в памяти?

РЕДАКТИРОВАТЬ: я в настоящее время использую два словаря для кэширования данных, например:

var instruments = (
    from i in context.Instrument
    from p in i.InstrumentPerformance
    where p.PortfolioScenarioID == 6013
    select i)
    .ToDictionary (i => p.InstrumentID, i => i);

var performances = (
    from i in context.Instrument
    from p in i.InstrumentPerformance
    where p.PortfolioScenarioID == 6013
    select p)
    .ToDictionary (p => p.InstrumentID, p => p);

Тем не менее, для этого требуются два обращения к базе данных, причем одна из них кажется достаточной, и, что более важно, семантика для запроса данных о производительности (которая теперь является производительностью [InstrumentID]) не согласуется с способом запроса EF (который должен быть instrument.InstrumentPerformance.First ( ) и тому подобное).

Ответы на вопрос(2)

Ваш ответ на вопрос