2011-10-06 11 views
5

Tengo una entidad de usuario que contiene una colección de entidades de encuesta. Me gustaría que la asociación incluyera un filtro en la relación, como 'IsCompleted', por lo tanto, cuando estoy ansioso por cargar (o por la carga lenta) la colección, este filtrado ocurre.Entidad Framework 4 (Asociaciones configuradas con filtros)

¿Es esto algo sobre lo que tenemos control?

gracias!

Respuesta

0

Si está utilizando una base de datos de DB que admite vistas, puede considerar utilizar la vista como fuente para la colección de entidades de encuesta. Aproveche el poder del DB para hacer ese filtrado por usted.

0

La carga de asociaciones para una entidad siempre solo las obtiene todas, ya sea porque usó Incluir durante la consulta inicial, llamada Cargar después del hecho o causada por la carga diferida. El concepto de propiedad de navegación asume este comportamiento.

E.J. Brennan's answer funcionaría bien. Si no está preocupado por cargar todas las encuestas entre bastidores (debido a razones de rendimiento/memoria o algo así), también podría considerar crear una propiedad separada a través de una definición de clase parcial en su entidad que devuelve la lista filtrada.

public partial class User 
{ 
    public ICollection<Survey> CompletedSurveys 
    { 
     get { return Surveys.Where(s => s.IsCompleted); } 
    } 
} 
+0

que parece ser una característica importante que falta que soporte de otros ORM y es bastante importante en las aplicaciones de la empresa. Gracias. – Marco

+0

¿Cómo es una característica faltante? Como se muestra, es bastante trivial agregar colecciones filtradas a una entidad a través de clases parciales. ¿Esperas que sea una opción en el diseñador de EDMX? El problema con eso es que el modelo de entidad solo se refiere al esquema y las relaciones. Es un artefacto de la relación existente y conocido por EF que las clases de objeto de entidad que genera vienen con una propiedad de navegación conveniente. Los filtros de asociación personalizados están fuera del alcance de la definición del modelo de entidad, y se resuelven fácilmente con LINQ/code de todos modos. –

+0

el ejemplo que proporcionó filtra la colección en memoria y cuando se trata de muchos registros con colecciones asociadas que pertenecen al agregado, se está pintando en una esquina. – Marco

Cuestiones relacionadas