选择父给定的子ID

时间:2013-10-14 15:55:38

标签: linq nhibernate linq-to-nhibernate

看似简单的问题比我想象的更难:

public class SomeCategory 
{
    public virtual int Id { get; set; }
    public virtual IList<SomeClass> SomeInstances { get; set; }
}

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

SomeClass和SomeCategory之间存在1:m的关系(即SomeClass的实例只属于一个SomeCategory,SomeCategory可以有几个SomeClass实例)。

如何给出SomeClass Id(Linq to NHibernate)的SomeCategory?

2 个答案:

答案 0 :(得分:3)

我假设您可以访问SomeCategory列表,然后尝试

var category = someCategoryList.FirstOrDefault(e => e.SomeInstances
                               .Any(a => a.Id == someclassId));

答案 1 :(得分:1)

您也可以使用QueryOver来完成。

Parent parentAlias = null;
Child childAlias = null;

var query = session.QueryOver<Parent>(() => parentAlias)
                   .JoinAlias(()=> parent.Childs, ()=> childAlias)
                   .Where(()=> childAlias.Parent.Id == id)
                   .Select(()=> childAlias.Parent)
                   .SingleOrDefault();