NHibernate-从投影列表中排除属性(select子句)?

NHibernate-从投影列表中排除属性(select子句)?,nhibernate,hibernate,hql,criteria,Nhibernate,Hibernate,Hql,Criteria,我有这样的课 public class Agreement { public virtual string ArrgKey { get; set; } public virtual string SubjectCode { get; set; } // mapped as a HasMany to AgreementStateCountyRelation public virtual IList<AgreementStateCountyRelation&g

我有这样的课

public class Agreement
{
    public virtual string ArrgKey { get; set; }
    public virtual string SubjectCode { get; set; }

    // mapped as a HasMany to AgreementStateCountyRelation
    public virtual IList<AgreementStateCountyRelation> StateCounties { get; set; }
}

public class AgreementStateCountyRelation
{
    public virtual string ArrgKey { get; set; }
    public virtual State State { get; set; } // State has a StateAbbr property
    public virtual County County { get; set; }
}
公共类协议
{
公共虚拟字符串ArrgKey{get;set;}
公共虚拟字符串SubjectCode{get;set;}
//映射为HasMany到AgreementStateCounty关系
公共虚拟图书馆

另一个有这个问题的人(不幸的是,他不能做得比像我一样设置投影更好):

var list = session.CreateQuery("select a from Agreement a 
                                join a.StateCounties sc 
                                join sc.State s 
                                where s.StateAbbr = ?")
            .SetParameter(0, "TX")
            .List<Agreement>();
DetachedCriteria dc = DetachedCriteria.For<Agreement>("a");
dc.CreateAlias("a.StateCounties", "sc");
dc.CreateAlias("sc.State", "s");
dc.Add(Restrictions.Eq("s.StateAbbr", "TX"));
var list = dc.GetExecutableCriteria(session).List<Agreement>();
DetachedCriteria dc = DetachedCriteria.For<Agreement>("a");
dc.CreateAlias("a.StateCounties", "sc");
dc.CreateAlias("sc.State", "s");
dc.SetProjection(Projections.ProjectionList()
    .Add(Projections.Property("ArrgKey"), "ArrgKey")
    .Add(Projections.Property("SubjectCode"), "SubjectCode"));
dc.SetResultTransformer(Transformers.AliasToBean<Agreement>());
dc.Add(Restrictions.Eq("s.StateAbbr", "TX"));
var agreements = dc.GetExecutableCriteria(session).List<Agreement>();
DetachedCriteria dc = DetachedCriteria.For<Agreement>("a");
var agreements = dc.GetExecutableCriteria(session).List<Agreement>();
DetachedCriteria dc = DetachedCriteria.For<Agreement>("a");
dc.CreateAlias("a.StateCounties", "sc");
dc.CreateAlias("sc.State", "s");
var agreements = dc.GetExecutableCriteria(session).List<Agreement>();