也许这很简单,但我坚持下去,我没有找到任何关于如何完成的答案。我有一个父实体用户,其中包含一组子实体操作。这两个实体仅用于 UI,因此它们是 View 的亲属。这是伪代码
public class User
{
public int Id {get; set;}
public IEnumerable<Operation> Operations {get; set;}
public int TotalSuccessfulAccesses {get; set;} // not mapped to the database
public int TotalFailedAccesses {get; set;} // not mapped to the database
}
public class Operation
{
public int Id {get; set; }
public int UserId {get; set; } // FK
public int NbSuccessfulAccesses {get; set; }
public int NbFailedAccesses {get; set; }
}
我想要做的是在一次到数据库的往返中从子集合初始化具有 TotalSuccesfulAccesses 和 TotalFailedAccesses 的用户。
对于每个用户,我们应该计算 Sum(Operation.NbSuccessfulAccesses) 和 Sum(Operation.NbFailedAccesse) 并分别投影到 User.TotalSuccesfulAccesses 和 User.TotalFailedAccesses .
我尝试使用多标准和几个查询,但我对此并不满意。我想知道是否有一种简单的方法可以通过投影或其他方式来实现。或者我错过了一些东西。
你会推荐什么 ?
预先感谢您的帮助。
最佳答案
我能够通过以下方式摆脱魔术别名字符串:
UserViewModel userView = null;
Add(Projections.Sum<User>(x => operations.NbSuccessfulAccesses).WithAlias(() => userView.TotalSuccessfulAccesses))
关于NHibernate 使用 Linq 或 QueryOver 将子实体投影到父属性中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5796036/