实体框架 - 包装相关对象的集合

时间:2013-09-30 09:44:52

标签: c# sql-server database entity-framework

我正在尝试使用Entity Framework将相关对象的集合包装到单个对象中。 我的情况如下: 我有一个名为“学生”的实体和一个名为“书”的实体。 这些之间的关系是这样的:"Student"-1-----*-"Book"。显然有几本书可以属于同一个学生。 现在我尝试解释简化我想要实现的内容:我想在Student上访问Books属性:Student.Books但只有1990年以后出版的书籍应该包含在集合中。我想我必须拦截实体框架的select语句来实现这一点,但我不知道如何做到这一点。 更好的是,如果Books属性是包含Books集合的自定义包装类的实例,那么我可以定义直接在Books属性上过滤集合的方法。 谢谢你的帮助!

此致 sjkm

1 个答案:

答案 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();

希望这有帮助吗?