我正在使用急切加载来填充我的对象。是否可以过滤子集合的子集合。以下代码为我提供了过滤期间的子集合。但我也想过滤 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();
有没有解决这个问题的方法,或者使用连接的替代方法?
谢谢