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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top