NHibernate JoinQueryOver 返回所有子类型条目

标签 nhibernate queryover

我知道有很多类似的主题,但我找不到我正在寻找的答案。

我有 Message带有 Receivers 的列表.我正在尝试获取状态为 new 的所有消息和 A 类型的接收器.我收到所有具有相应接收器但具有所有接收器的消息。我只想得到我感兴趣的接收器。

这是我正在尝试使用的内容:

var messages = session.QueryOver<MessageDTO>()
    .Where(message => message.State == MessageState.New)
    .JoinQueryOver<MessageReceiverDTO>(message => message.MessageReceivers)
    .Where(receiver => receiver.Type == ReceiverType.A)
    .TransformUsing(Transformers.DistinctRootEntity)
    .List();
    //.Where(message => message.MessageReceivers.Count > 0)
    //.ToList();

有这方面的帮助会很棒。我也尝试使用 Select用于从查询中获取消息和接收器,但这也不起作用。

最佳答案

尝试使用别名 QueryOver:

MessageDTO messageAlias = null;
MessageReceiverDTO receiverAlias = null;

var query =
    session.QueryOver<MessageDTO>(() => messageAlias)
         .JoinAlias(() => messageAlias.Receivers, () => receiverAlias)
         .Where(() => messageAlias.State == MessageState.New)
         .And(() => receiverAlias.Type == ReceiverType.A);

关于NHibernate JoinQueryOver 返回所有子类型条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36286208/

相关文章:

nhibernate - NHibernate QueryOver与ManytoMany

database - 如何在 NHibernate 中进行此投影?

nhibernate - nhibernate 映射文件中来自多个程序集和命名空间的类型

清除集合时 NHibernate 级联删除子项

c# - Nhibernate 数据库优先

c# - 如何使用 Nhibernate 多次内连接同一张表

nhibernate - 使用 QueryOver 进行交叉连接

sql-server - 如何通过 QueryOver API 对任何属性使用全文搜索

NHibernate 3.0 QueryOver 相当于 Nhibernate Linq 中的 FetchMany

nhibernate - 每个请求的 ServiceStack NHibernate session