我有三张桌子(表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>();
如果我遗漏了任何内容或没有提供足够的详细信息,请提前致歉,如果您需要更多信息,请告诉我......
答案 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();