我有一个实体框架代码优先项目,我的对象有一个:
public virtual List<Transaction> Transactions { get; private set; }
它当然会是懒惰的,这就是我想要的。现在,在同一个对象上,我想介绍一个'便利属性',它为我做了一些过滤:
public virtual List<Transaction> EnabledTransactions
{
get
{
// TODO: .AsQueryable<Transaction>(); ?
return this.Transactions.Where(t => !t.Disabled).ToList();
}
}
问题:
virtual
?如果它不是virtual
,.NET是否会尝试加载它,从而否定延迟加载?IQueryable
(我知道我们不能将它作为导航属性),这是否意味着任何正在执行account.Transactions.Where(t => t.Date <= someDate)
的人都会强制完全加载整个集合,而不是只获得满足谓词的项目?