Nhibernate 如何在ActiveRecord中为子项添加where子句

Nhibernate 如何在ActiveRecord中为子项添加where子句,nhibernate,castle-activerecord,Nhibernate,Castle Activerecord,我使用Castle ActiveRecord并创建了两个实体,如下所示: [ActiveRecord("Teams")] public class Team : ActiveRecordLinqBase<Team> { public Team() { Members = new List<Member>(); } [PrimaryKey] public int Id { get; set; } [

我使用Castle ActiveRecord并创建了两个实体,如下所示:

    [ActiveRecord("Teams")]
public class Team : ActiveRecordLinqBase<Team>
{
    public Team()
    {
        Members = new List<Member>();
    }

    [PrimaryKey]
    public int Id { get; set; }

    [Property("TeamName")]
    public string Name { get; set; }

    [Property]
    public string Description { get; set; }

    [HasMany(Inverse = true,
             Lazy = true,
             Cascade = ManyRelationCascadeEnum.AllDeleteOrphan)]
    public virtual IList<Member> Members { get; set; }
}

[ActiveRecord("Members")]
public class Member : ActiveRecordLinqBase<Member>
{
    [PrimaryKey]
    public int Id { get; set; }

    [Property]
    public string FirstName { get; set; }

    [Property]
    public string Lastname { get; set; }

    [Property]
    public string Address { get; set; }

    [BelongsTo("TeamId")]
    public Team Team { get; set; }
}   
如何使用ICriterion完成此操作? 我的意思是如何为Team.Members属性添加标准。 不使用LINQ。(我知道这可以使用linq轻松完成)

对于join,您可以使用 分离标准

 DetachedCriteria criteriaTeam = DetachedCriteria.For<Team>();
 DetachedCriteria criteriaMember = criteriaTeam .CreateCriteria("Members");
 criteriaTeam .Add(Expression.Eq("Name", "name1"));
 criteriaMember.Add(Expression.Eq("Address", "address"));
 ICriteria executableCriteria = criteriaTeam .GetExecutableCriteria(session);
 executableCriteria.List<Team>();
detachedCriteriaTeam=DetachedCriteria.For();
DetachedCriteria criteriaMember=criteriaTeam.CreateCriteria(“成员”);
criteriaTeam.Add(Expression.Eq(“Name”,“name1”));
criteriaMember.Add(Expression.Eq(“Address”,“Address”));
ICriteria executableCriteria=criteriaTeam.GetExecutableCriteria(会话);
executableCriteria.List();

这将只返回团队。要在一次获取中同时返回团队和成员,您可以使用NHibernate结果转换器

谢谢an2,由于会话,您的代码似乎使用了NHibernate,我的案例是Castle ActiveRecord,无论如何,我从您的代码中得到了灵感。
select *
  from Teams t join Member m on t.Id = m.TeamId
 where t.Name = 'name1'
   and m.Address = 'address'
 DetachedCriteria criteriaTeam = DetachedCriteria.For<Team>();
 DetachedCriteria criteriaMember = criteriaTeam .CreateCriteria("Members");
 criteriaTeam .Add(Expression.Eq("Name", "name1"));
 criteriaMember.Add(Expression.Eq("Address", "address"));
 ICriteria executableCriteria = criteriaTeam .GetExecutableCriteria(session);
 executableCriteria.List<Team>();