1

我有三个表(表 A、B 和 C)。我想做以下事情:左连接 A 和 B,左连接 A 和 C。

现在我使用了 CreateCriteria,使用 jointype 进行连接,该连接工作到一定程度,但会引发 Query 异常。这似乎是因为它似乎试图将 B 与 C 而不是 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>();

如果我错过了任何内容或没有提供足够的细节,请提前道歉,如果您需要更多信息,请告诉我...

4

1 回答 1

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();
于 2012-09-26T19:36:44.937 回答