我正在尝试使用Entity Framework将相关对象的集合包装到单个对象中。
我的情况如下:
我有一个名为“学生”的实体和一个名为“书”的实体。
这些之间的关系是这样的:"Student"-1-----*-"Book"
。显然有几本书可以属于同一个学生。
现在我尝试解释简化我想要实现的内容:我想在Student上访问Books属性:Student.Books但只有1990年以后出版的书籍应该包含在集合中。我想我必须拦截实体框架的select语句来实现这一点,但我不知道如何做到这一点。
更好的是,如果Books属性是包含Books集合的自定义包装类的实例,那么我可以定义直接在Books属性上过滤集合的方法。
谢谢你的帮助!
此致 sjkm
答案 0 :(得分:0)
您可以为Student的Entity Framework Model Class对象创建一个属性,如下所示: -
public partial class Student
{
public IQueryable<Book> FilteredBooks
{
get
{
return this.Books.Any(b=> b.PublishedDate.Year >= 1990).AsQueryable();
}
}
}
理论上,您现在应该可以访问: -
object.Datasource = Student.FilteredBooks.ToList();
希望这有帮助吗?