1

3 つのテーブル (テーブル A、B、C) があります。私は次のことをしたいと思います: Left Join A with B と Left Join A with C.

今私は CreateCriteria を使用して、特定のポイントまで機能する jointype を使用して結合を行いましたが、クエリ例外をスローしています。これは、A と C ではなく、B を 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 に答える