实体框架查询,过滤子集合的子集合

时间:2012-08-15 14:55:19

标签: entity-framework-4 filtering eager-loading

我正在使用预先加载来填充我的对象。是否可以过滤子集合的子集合。以下代码为我提供了过滤时段的子集合。但我还想过滤TradeStatus == TradeStatus.Open期间的孩子?

    public class Route
    {
       public Guid RouteId { get; set; }
       public string Name { get; set; }
       public virtual ICollection<Period> Periods { get; set; }
    }

    public class Period
    {
       public Guid PeriodId { get; set; }
       public virtual ICollection<Trade> Trades { get; set; }
       public bool IsActive { get; set; }
    }

    public class Trade
    {
       public Guid PeriodId { get; set; }
       public string TradeName { get; set; }
       public decimal TradePrice { get; set; }
       public TradeStatus TradeStatus { get; set; }
    }

    string routeName = "UK_USA"

    Route route = Context.Set<Route>().SingleOrDefault(r => r.Name.Equals(routeName));

    if (route != null)
    {
        Context.Entry(route).Collection(r => r.Tenors).Query()
                      .Where(t => t.IsActive)
                      .Include(t => t.Trades).Load();
    }

我已经尝试了以下但它返回

  

Include路径表达式必须引用导航属性   在类型上定义。使用虚线路径进行参考导航   属性和集合导航的Select运算符   属性。参数名称:路径

Context.Entry(route).Collection(r => r.Tenors).Query()
                          .Where(t => ValidTenorName.Contains(t.Name))
                          .Include(t => 
                              t.Trades.Where(tr=> tr.TradeStatus ==  TradeStatus.Open).Load();

是否有解决此问题的方法,或使用连接的替代方法?

由于

0 个答案:

没有答案