ICriteria子查询

时间:2011-04-28 07:10:12

标签: nhibernate subquery icriteria

我必须使用简单的实体

    public class EntityA
    {
         public virtual int ID { get;set;}
         public virtual string Name { get;set;}
         public virtual IList<EntityB> BList { get;set;}

         public EntityA()
         {
            BLIst = new List<EntityB>();
         }
    }


    public class EntityB
    {
         public virtual int ID { get;set;}
         public virtual string Name { get;set;}
         public virtual int Value { get;set;}
         public virtual EntityA EntityA { get;set;}
    }

如何制作ICriteria查询,其中应查询EntityA.Name ='SearchString'和List((EntityB.Name ='Name1'和(EntityB.Value = 1))和((EntityB.Name =' Name2')和(EntityB.Value = 1)))

搜索可以包含List,我尝试了以下查询:

            if (SearchBLIst.Count > 0)
            {
                foreach (EntityB searchAttribute in SearchBLIst)
                {
                    Junction disjunction1 = Restrictions.Disjunction();
                    disjunction1.Add(
                                Expression.Eq("entityB.ID", searchAttribute.ID) &&
                                Expression.Ge("attributeValues.Value",searchAttribute.value));
                    store.Add(disjunction1);

                }
            }

1 个答案:

答案 0 :(得分:0)

实体b名称应该同时是2个不同的值。

我猜你也想在限制中使用其他实体的属性。你需要“加入别名”。