使用EntityFramework在存储库中加载相关实体

时间:2016-02-12 13:54:43

标签: c# .net entity-framework

在我的模型中,我有一个User聚合根,每个根都有一个关联的Transactions集合。每个Transaction都有一个反向导航属性User

我需要立即获取所有Transactions,这导致我的UserRepository

中的以下查询
public ICollection<ITransaction> GetAllTransactions() {

    return (from u in Set.Include("Transactions") 
            from t in u.Transactions
            select t).ToList();       
}
来自EF上下文的

SetIDbSet<User>

问题是没有实现延迟加载(我也不想实现它),查询后的Transaction.User属性是null。一切都通过EF正确映射。

使用非空Transactions检索所有User的查询应该是什么?

我正在使用EF6。

1 个答案:

答案 0 :(得分:1)

您需要实际Include Transaction.User。这可以在最终投影到Transaction后完成

public ICollection<ITransaction> GetAllTransactions()
{    
    return Set.SelectMany(u => u.Transactions).Include(t => t.User).ToList();       
}