C# 在一个NHibernate查询中使用两个非直接相关的表

C# 在一个NHibernate查询中使用两个非直接相关的表,c#,nhibernate,C#,Nhibernate,我是NHibernate的新手,不确定我的要求是否合理 我正在尝试重写我目前拥有的一些代码: public IEnumerable<Order> GetByQueue(OrderStatus orderStatus, Queue queue) { var criteria = NHibernateSession.CreateCriteria(typeof (TaskDevice), "TaskDevice"); //Pull up all Tasks where a

我是NHibernate的新手,不确定我的要求是否合理

我正在尝试重写我目前拥有的一些代码:

public IEnumerable<Order> GetByQueue(OrderStatus orderStatus, Queue queue)
{
    var criteria = NHibernateSession.CreateCriteria(typeof (TaskDevice), "TaskDevice");

    //Pull up all Tasks where a Task's TaskDevice's SourceSiteID or DestinationSiteID are represented in a Queue's QueueLocations.
    foreach(QueueLocation queueLocation in queue.QueueLocations)
    {
        criteria.Add(
                Expression.Disjunction()
                    .Add(Restrictions.Eq("OriginalLocationID", queueLocation.ComponentID))
                    .Add(Restrictions.Eq("LocationID", queueLocation.ComponentID))
            );
    }

    //Get a hold on all the Tasks returned from TaskDevices.
    List<Task> tasks = criteria.List<TaskDevice>().Select(taskDevice => taskDevice.Task).ToList();

    //Return all Orders of the given Tasks whose OrderStatus matched the provided orderStatus.
    return tasks.Where(task => task.Order.OrderStatus == orderStatus).Select(task => task.Order);
}
然后生成一个异常,指示NHibernate在TaskDevice上找不到属性QueueLocation。这是一个有效的异常--TaskDevice不知道队列位置


我想知道如何使用NHibernate加载两个不相关的表,以便在一个查询中通过NHibernate完全过滤我的限制。这可能吗?

对于模型中不相关实体的查询,条件不是一个好的API

改用HQL

var criteria = NHibernateSession
    .CreateCriteria(typeof (TaskDevice), "TaskDevice")
    .CreateCriteria("QueueLocation", "QueueLocation");