我有一个类Post
这是一个Entity Framework模型。它包含了这样的特性:如何在LINQ-to-Entities查询中使用自定义属性?
public bool Showable {
get {
return this.Public && this.PublishedDate > DateTime.now
}
}
我可以用它在这样的查询:
from p in db.Posts where p.Showable select p;
,但是当我有一个使用它的属性,这样
public IEnumerable<Post> ShowablePosts {
get {
return from p in db.Posts where p.Showable select p;
}
}
那么我做不到:
from p in ShowablePosts where p.Id > 42 select p;
它s ays:
LINQ to Entities不支持指定的类型成员'Showable'。仅支持初始化程序,实体成员和实体导航属性。
我可以在查询中调用计算属性,但不能在运行查询的方法中调用。有点奇怪。 – Pablo 2010-02-11 01:41:33
我现在生活在Linq-to-SQL的世界里,是从'db.Posts'中返回p。可显示select p;'本地是'IQueryable'还是'IEnuemerable '在EF中?这对他的问题有影响吗? –
2010-02-11 01:42:54
@J。 Pablo Fernandez:当您定义Linq查询时,只有当您执行需要实际结果的事情时才执行。 Linq支持很多事情,但实体框架不支持,而这些事情只有在执行查询后才会变得明显。 – 2010-02-11 03:34:45