我有一个实体,它有一个子实体,上面有一组实体。
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,我需要所有匹配的Entity1,如
session.Query<Entity1>(x=>x.Entity2.Entity3s.Any(y=>y.Id = 500));
我尝试了linq以及查询,并且都在“任何”命令上窒息
任何人都可以引导我朝着正确的方向前进吗?
&lt; ---编辑----&gt;
是的,所以我想我有一堆错误,现在我已经修复了所有问题,如果我直接暴露可枚举,我的查询就有效,但是当我将我的集合封装起来时,它不起作用。
我得到的错误是
无法解析表达式“[-1] .Entity2”,因为它具有不受支持的类型。只能解析查询源(即实现IEnumerable的表达式)和查询运算符 内部例外 消息“预期实现IEnumerable的类型,但找到'... Entity2'。\ r \ nParameter name:expression”string
谢谢,
RAIF