Фильтровать в LoadProperty или включать

#entity-framework-4

#entity-framework-4

Вопрос:

LoadProperty или Include извлекает все связанные строки из основного объекта. Как я могу отфильтровать строки, полученные из вызова LoadProperty? Я бы не хотел выполнять постобработку восстановления данных из базы данных.

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

 public Expression<Func<TipoReforma, bool>> predicadoFiltroIdioma(String filtro)
    {
    return x => x.DetalleTipoReforma.Any(y=>filtro.Contains(y.Idioma.idioma));
    }


IEnumerable<T> resultado = objectSet.Where<T>(predicadoFiltroIdioma("en");
Contexto.LoadProperty(resultado.ToList()[0], "DetalleTipoReforma");
  

Я хочу только «TipoReforma», но связанная информация должна быть только той, идиомой которой является «x».

Заранее спасибо,

Ответ №1:

Ни LoadProperty , ни Include не поддерживают фильтрацию = они всегда загружают все связанные объекты. Вы должны использовать другой подход. Вы можете попробовать использовать CreateSourceQuery . Что-то вроде:

 var data = ((EntityCollection<TipoReforma>)resultado.ToList[0].DetalleTipReforma)
                .CreateSourceQuery().OrderBy(predicadoFiltroIdioma).ToList();
  

Он также должен заполнить ваше свойство навигации в основном объекте. Также убедитесь, что отложенная загрузка отключена перед выполнением этого кода.