2016-02-12 54 views
0

在我的模型中,我有一个User聚合根,每个聚合根都有一个关联的Transactions的集合。每个Transaction都有一个反向导航属性User使用EntityFramework在存储库中加载相关实体

我需要得到所有Transactions的一次,而这也导致了下面的查询在我UserRepository

public ICollection<ITransaction> GetAllTransactions() { 

    return (from u in Set.Include("Transactions") 
      from t in u.Transactions 
      select t).ToList();  
} 

Set从EF上下文IDbSet<User>

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

查询应该如何检索所有Transactions非空User

我正在使用EF6。

+1

,那么你需要在你的交易'.INCLUDE(“用户”)'。尝试'从u.Transactions.Include(“用户”)''而不是'从u.Transactions'中的t。 – Maarten

+0

什么是'Set'? –

+0

你不能只是做一些像'选择新的t,t.User' – markpsmith

回答

1

您需要实际上IncludeTransaction.User。这可能最终投射后,如果您想被填入了`User`财产做Transaction这样

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

完美地工作。 – Graham

相关问题