ICriteria подзапрос - PullRequest
       20

ICriteria подзапрос

0 голосов
/ 28 апреля 2011

У меня есть простые сущности

    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' и список должен быть запрошен (((EntityB.Name = 'Name1' And (EntityB.Value = 1)) And ((EntityB.Name = 'Name2') And (EntityB.Value = 1)))

Поиск может содержать список, и я попытался выполнить следующий запрос:

            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 голосов
/ 28 апреля 2011

Предполагается, что имя объекта b будет иметь 2 разных значения одновременно.

Полагаю, вы хотите использовать свойство другого объекта в ограничении. Вам нужно "присоединиться к псевдониму".

...