У меня есть сущность, дочерняя сущность которой содержит коллекцию сущностей.
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
Спасибо
Раифа