NHibernate 使用 Linq 或 QueryOver 将子实体投影到父属性中

标签 nhibernate linq-to-nhibernate nhibernate-projections queryover

也许这很简单,但我坚持下去,我没有找到任何关于如何完成的答案。我有一个父实体用户,其中包含一组子实体操作。这两个实体仅用于 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/

相关文章:

c# - NHibernate MySQL 枚举

nhibernate - Entity Framework 和 NHibernate - 缓存仍然是服务层的职责吗?

database - 包含来自多个数据库的数据的域实体的推荐模式

linq - NHibernate和LINQ:将Fetch()与自定义ToPagedList方法一起使用

linq - 具有分离条件的 NHibernate Query<T>...

Linq-to-NHibernate OrderBy 不工​​作

java - Spring 中 JPA 存储库接口(interface)投影的最佳实践?

collections - 我可以使用 NHibernate Criteria 将实体及其子集合投影到类上吗?

hibernate - 是否可以在 Projections、Criteria、Grails 中使用聚合函数和属性?

nhibernate - 如何使用一些初始化字段(Id 除外)创建 NHibernate 代理对象?