0

一个看似简单的问题,结果却比我想象的更难:

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?

4

2 回答 2

3

我假设您将有权访问SomeCategory列表,然后尝试

var category = someCategoryList.FirstOrDefault(e => e.SomeInstances
                               .Any(a => a.Id == someclassId));
于 2013-10-14T16:04:20.787 回答
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();
于 2013-10-15T11:23:03.370 回答