1

我正在使用急切加载来填充我的对象。是否可以过滤子集合的子集合。以下代码为我提供了过滤期间的子集合。但我也想过滤 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();
    }

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

包含路径表达式必须引用在类型上定义的导航属性。对引用导航属性使用虚线路径,对集合导航属性使用 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();

有没有解决这个问题的方法,或者使用连接的替代方法?

谢谢

4

0 回答 0