Ich habe eine Klasse Post
, die ein Entity Framework Modell ist. Es enthält eine Eigenschaft wie folgt:Wie verwendet man eine benutzerdefinierte Eigenschaft in einer LINQ-to-Entities-Abfrage?
public bool Showable {
get {
return this.Public && this.PublishedDate > DateTime.now
}
}
ich es in einer Abfrage wie folgt verwendet werden:
from p in db.Posts where p.Showable select p;
aber wenn ich eine Eigenschaft, die es verwendet, wie diese
public IEnumerable<Post> ShowablePosts {
get {
return from p in db.Posts where p.Showable select p;
}
}
dann kann ich nicht:
from p in ShowablePosts where p.Id > 42 select p;
Es ist ays:
Der angegebene Typ member 'Showable' wird in LINQ to Entities nicht unterstützt. Es werden nur Initialisierungs-, Entitäts- und Entitätsnavigationseigenschaften unterstützt.
Ich kann berechnete Eigenschaften in einer Abfrage in Ordnung, aber nicht in einer Methode, die eine Abfrage ausführt. Es ist komisch. – Pablo
Ich lebe in der Linq-to-SQL-Welt im Moment, ist 'Rückkehr von p in db.Posts wo p.Showable wählen p;' nativ ein 'IQueryable' oder 'IEnuemerable ' in EF? Und würde das auf seine Frage einwirken? –
@J. Pablo Fernandez: Linq-Abfrage wird nicht ausgeführt, wenn Sie sie definieren, nur wenn Sie etwas tun, das die tatsächlichen Ergebnisse benötigt. Es gibt viele Dinge, die Linq unterstützt, aber das Entity Framework nicht, und diese Dinge werden erst bei der Ausführung der Abfrage offensichtlich. –