如何查询NHibernate中的一对多关系?

时间:2013-07-27 05:08:54

标签: nhibernate fluent-nhibernate linq-to-nhibernate

鉴于代码:

public class Audit {
    public Audit {
        Details = new List<AuditDetail>();
    }
    public virtual IList Details { get; set; }
    public virtual string SourceFile { get; string }
    public virtual DateTime Timestamp  { get; set; }
    public virtual long Id { get; set; }
}

public class AuditDetail {
    public virtual string CardNumber { get; set; }
    public virtual string Message { get; set; }
    public virtual Audit MyAudit { get; set; }
    public virtual long Id { get; set; }
}

如何查询这些一对多关系以返回具有SourceFile,CardNumber和Message值的对象列表,例如使用LINQ过滤时间戳?提前谢谢。

1 个答案:

答案 0 :(得分:2)

Audit类的构造函数缺少括号。

但是,如果我正确理解您的问题,以下内容应引导您朝着正确的方向前进。

 from a in session.Query<Audit>()
 join d in session.Query<AuditDetail>() on a.Id equals d.MyAudit.Id
 where a.Timestamp <= DateTime.Now
 select new { a.SourceFile, d.CardNumber, d.Message });

您可以使用首选条件替换<= DateTime.Now