当前位置: 首页 > 面试题库 >

NHibernate用子查询计数另一个实体吗?

后星河
2023-03-14
问题内容

我有两个实体:

User
{
    UserGuid,
    Address,
    .
    .
    .
    EmailCount // This is not a column in the database, 
               // I just wanna get the count number from the UserEmail table
               // and map the value to this property
}

UserEmail
{
    UserGuid,
    Timestamp
}

问题是如何在NHibernate中通过子查询获取电子邮件计数?

到目前为止,我有这个功能,但是它不起作用。任何的想法?

User userEntity = null;

var subQuery = QueryOver.Of<UserEmail>()
    .Where(ue => ue.UserGuid == userEntity.UserGuid)
    .ToRowCountQuery();

return _session.StatefulSession.QueryOver(() => userEntity)
          .WithSubquery.WhereValue("EmailCount").Eq(subQuery)
          .List();

问题答案:

这就是使用语法subquery获取内联 计数 的方法QueryOver

User userEntity = null;

var subQuery = QueryOver
    .Of<UserEmail>()
    .Where(ue => ue.UserGuid == userEntity.UserGuid)
    .ToRowCountQuery();

var list = _session.StatefulSession
    .QueryOver<User>(() => userEntity)
    .SelectList(projections => projections
        .Select(x => x.UserGuid)
             .WithAlias(() => userEntity.UserGuid)
        .Select(x => x.Address)
             .WithAlias(() => userEntity.Address)
        // any property to be selected
        ... 
        // INLINE COUNT
        // our subquery placed into play
        .SelectSubQuery(subQuery)
             // this will populate virtual/not mapped EmailCount
             .WithAlias(() => userEntity.EmailCount) 
    )
    .TransformUsing(Transformers.AliasToBean<User>())
    //.Take(10).Skip(100) // paging
    .List();


 类似资料:
  • 问题内容: 如何使用Criteria编写以下SQL: 问题答案: 要使用NHibernate,产生如下查询: 我们必须选择: 将子选择映射为实体。 创建原始SQL查询 第一种选择是创建一些,并将其映射为一个实体。如果我们不喜欢视图(或无法创建视图),则可以使用NHibernate映射元素element的功能 : 第二种选择是关于使用NHibernate API创建本机/原始SQL: 它没有从映射中

  • 我有一个关于查询对象两次的问题。我是说我有这样的情况: > - 后来在网站中,我把一个表单编辑一个实体。它就是上述实体之一。所以我查询这个实体的数据库(整体,而不是部分),并把它放在表单中。 问题是,如果我编辑其中一个实体,就不会再次查询它以获取所有字段,因为我以前已经查询过它。 你知道怎么解决这个问题吗?我不想查询选择框的完整实体。

  • 问题内容: 我有三个表的简单文章应用程序: 在登录页面上,我想显示最新文章标题以及作者姓名和文章评论总数。主要问题是如何获取文章的评论总数,我没有弄对。我应该得到以下输出: 在我的实际应用程序中,我在文章表中添加了一个列,以显示对该文章的评论总数。当新注释添加到系统时,此列将更新。这样做的问题是,在添加新评论时,文章表被锁定了。在我的应用程序中,每分钟都会添加很多评论。因此,我试图避免通过重写SQ

  • 问题内容: 我进行了很多搜索,但找不到有用的答案: 我想通过用户给我一个开始和结束日期来列出用户定义的时间段的总计。从开始日期到开始日期之间的每次总计应该相加,并在每一天添加1天。因此最后一行给出了从开始到结束日期的总计。示例:-给定期间=开始2013-01-01,结束= 2013-01-31 所以我有一个查询谁计算所有天: 我有一个查询谁每天计算总数 现在将这两者结合起来很难得到我的最终结果。

  • 问题内容: 我正在将子系统从 NHibernate 移植到 Entity Framework, 并希望看到将以下查询移植到 EF 的最佳方法。 帐户余额类别为: 该表是: 示例数据是(使用数字ID可以更好地理解): 该 AccountBalanceByDate 实体持有某一天的账户余额。如果某天没有交易,则该天将没有 AccountBalanceByDate ,我们应该查看前几天以查看该帐户的余额

  • 我有两个项目。第一个是实体,我用javes保存它。然后我得到了第二个项目,在那里我想测试第一个项目是否正确地保存了更改。但是第二个不依赖于第一个的实体。ist是否可以在第二个项目中查询第一个项目的实体的更改?