Fluent nhibernate 从DetachedCriteria中选择子查询

Fluent nhibernate 从DetachedCriteria中选择子查询,fluent-nhibernate,criteria,Fluent Nhibernate,Criteria,我有以下条件和detachedCriteria var criteria = Session.CreateCriteria<ItemAnalysis>("ia"); criteria.CreateAlias("ia.ItemInstance", "ii"); criteria.CreateAlias("ii.ScoreAdministration", "sa"); criteria

我有以下条件和detachedCriteria

    var criteria = Session.CreateCriteria<ItemAnalysis>("ia");
                criteria.CreateAlias("ia.ItemInstance", "ii");
                criteria.CreateAlias("ii.ScoreAdministration", "sa");
                criteria.Add(Restrictions.Eq("ii.ItemId", itemId));

    var status = DetachedCriteria.For<ItemAnalysis>("ia_")
                        .CreateAlias("ia_.ItemInstance", "ii_")
                        .CreateAlias("ii_.ScoreAdministration", "sa_")
                        .Add(Restrictions.Eq("ii_.ItemId", itemId))
                        .SetProjection(
                            Projections.SqlProjection
                            (
                                "ia_.CTTItemStatId, RANK() OVER(Partition BY 
                                    sa_.ExamSeriesCode ORDER BY ia_.StatDate DESC) AS RowNm",
                                new string[] { "CTTItemStatId", "RowNm" },
                                new IType[] { NHibernate.NHibernateUtil.Int32, 
                                                  NHibernate.NHibernateUtil.Int32 }
                            )
                         );

我们的解决方案是改变数据库。基本上,我们获取内部子查询结果并将其作为列存储在ItemAnalysis表中。对于我自己的教育,我仍然想知道如何做这作为一个标准。
 // what parameters should I be using here??  
  var subQuery = status.CreateCriteria(?, ?)  // expects an association path and an alias
                    .Add(Restrictions.Eq("RowNm", 1))
                    .SetProjection(
                        Projections.Property("CTTItemStatId")
                    );

  criteria = criteria.Add(Subqueries.PropertyEq("CTTItemStatId", subQuery));