Nhibernate запрос сущности на основе дочернего свойства дочернего - PullRequest
0 голосов
/ 01 апреля 2011

У меня есть сущность, дочерняя сущность которой содержит коллекцию сущностей.

public class Entity1  
{  
   public virtual Entity2 Entity2 {get; set}  
}  

public class Entity2  
{  
    private readonly IList<Entity3> _entity3s = new List<Entity3>();

    public virtual IEnumerable<Entity3> GetEntity3s() 
    { 
        return _entity3s;
    }

    public virtual void RemoveEntity3(Entity3 entity3) 
    { 
        _entity3s.Remove(entity3); 
    }

    public virtual void AddEntity3(Entity3 entity3)
    {
        if (!entity3.IsNew() && _entity3s.Contains(entity3)) return;
        _entity3s.Add(entity3);
    }
}  

public class Entity3  
{  
   public virtual int Id {get;set;}  
} 

У меня есть Entity3.Id, и мне нужны все соответствующие Entity1s, что-то вроде

session.Query<Entity1>(x=>x.Entity2.Entity3s.Any(y=>y.Id = 500));

Я пробовал linq, а также queryover и оба подавились командой «Любой».
Кто-нибудь может направить меня в правильном направлении?
<--- Редактировать ---->
Правильно, я думаю, что у меня была куча неправильных вещей, и теперь я исправил их все, и мой запрос работает, если я выставляю перечислимое напрямую, однако он не работает, когда моя коллекция инкапсулирована, как я делал выше.
я получаю ошибку

Невозможно проанализировать выражение '[-1] .Entity2', так как оно имеет неподдерживаемый тип. Только источники запросов (то есть выражения, которые реализуют IEnumerable) и операторы запросов могут быть проанализированы.
внутреннее исключение
Сообщение "Ожидается тип, реализующий IEnumerable, но найдено '... Entity2'. \ R \ nПараметр имени: выражение" string

Спасибо

Раифа

...