Filtro EntityDataSource en el valor de asociación
-
03-07-2019 - |
Pregunta
Realmente me gusta Entity Framework, pero hay algunas piezas clave que son un desafío para mí. ¿Alguien puede decirme cómo filtrar un EntityDataSource en una columna de Asociación? EF oculta los valores FK y en su lugar tiene una propiedad de Asociación. Dada una Entidad, Persona, con una asociación PersonType, habría esperado que algo como esto funcionara si quisiera filtrar mi Entidad Persona por Tipo:
GridDataSource.EntityTypeFilter = "it.PersonType.PersonTypeID = 1";
o
GridDataSource.Where = "it.PersonType.PersonTypeID = '1'";
o incluso
GridDataSource.WhereParameters.Add(new Parameter("it.PersonType.PersonTypeID", DbType.Object, "1"));
pero ninguno de esos funciona. ¿Alguien sabe cómo hacer esto?
Solución
Creo que la respuesta que estás buscando involucra el uso del método Include, como:
entities.it.Include("PersonType").Where(a => a.PersonType.PersonTypeID = '1');
Otros consejos
¿Has intentado aplicar el filtro en la memoria usando LINQ? (¿o quizás contra la base de datos?)
var personType = new PersonType { Id = 1 };
var query = PersonDataSource.Where(p => p.PersonType.Equals(personType));
// use this query as the DataSource for your GridView
Debo admitir que no he hecho nada como esto, pero he usado este truco para actualizar / crear una entidad sin cargar primero las entidades asociadas.