Tengo una clase Post
que es un modelo Entity Framework. Contiene una propiedad como esta:¿Cómo se usa una propiedad personalizada en una consulta LINQ-to-Entities?
public bool Showable {
get {
return this.Public && this.PublishedDate > DateTime.now
}
}
que se puede utilizar en una consulta como esta:
from p in db.Posts where p.Showable select p;
pero cuando tengo una propiedad que lo utiliza, como este
public IEnumerable<Post> ShowablePosts {
get {
return from p in db.Posts where p.Showable select p;
}
}
entonces no puedo hacer:
from p in ShowablePosts where p.Id > 42 select p;
Es s ays:
El miembro de tipo especificado 'Showable' no es compatible con LINQ to Entities. Solo se admiten inicializadores, miembros de entidades y propiedades de navegación de entidades.
Puedo llamar propiedades bien calculadas en una consulta, pero no en un método que ejecuta una consulta. Es raro. – Pablo
Vivo en el mundo de Linq a SQL en este momento, es 'return from p en db.Posts donde p.Showable select p;' nativa y 'IQueryable' o 'IEnuemerable ' en EF? ¿Y eso importaría en su pregunta? –
@J. Pablo Fernández: la consulta de Linq no se ejecuta cuando los defines, solo cuando haces algo que requiere los resultados reales. Hay muchas cosas que Linq soporta, pero que Entity Framework no hace, y estas cosas solo se vuelven obvias al ejecutar la consulta. –