#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();
Он также должен заполнить ваше свойство навигации в основном объекте. Также убедитесь, что отложенная загрузка отключена перед выполнением этого кода.