如何使用NHibernate连接两个不同的表

时间:2012-09-26 14:49:46

标签: c# nhibernate fluent-nhibernate

我有三张桌子(表A,B和C)。 我想做以下事情: 左边用A连接A,用C连接左边连接A.

现在我已经使用了CreateCriteria来使用jointype进行连接,这种连接在某一点上起作用但是它抛出了Query异常。这似乎是因为它似乎试图将C加入B而不是A和C.

代码:

currencies = session.CreateCriteria(typeof(Currency), "TableA")                 
            .CreateCriteria("FXRates", "TableB",
                            JoinType.LeftOuterJoin, 
                            Expression.Eq("fxrate.RateDate",date))
            .CreateCriteria("FundingRates", "TableC", 
                            JoinType.LeftOuterJoin,
                            Expression.Eq("fundingrate.RateDate", date))
            .Add(Restrictions.IsNotNull("currency.code"))
            .List<Currency>();

如果我遗漏了任何内容或没有提供足够的详细信息,请提前致歉,如果您需要更多信息,请告诉我......

1 个答案:

答案 0 :(得分:1)

您可以使用NHibernate“QueryOver”来执行此操作:

session.QueryOver<Item_A>()
   .Left.JoinQueryOver(item_A => item_A.Item_B)
   .Left.JoinQueryOver(item_A => item_A.Item_C)
   .TransformUsing(Transformers.DistinctRootEntity)
   .List();