我对 Nhibernate 有一个问题——它把右连接放在其他连接的中间。这是我的代码:
private DetachedCriteria GetBaseCriteria()
{
return DetachedCriteria.For<Foo>("foo")
.CreateAlias("foo.Bar", "bar")
.CreateAlias("bar.Baz", "baz", JoinType.InnerJoin);
}
public void Method()
{
var criteria = GetBaseCriteria();
criteria.CreateAlias("foo.Something", "something", JoinType.RightOuterJoin);
...
}
生成的 SQL 是
SELECT *
FROM foo
INNER JOIN bar ON ...
RIGHT OUTER JOIN something s ON ...
INNER JOIN baz ON ...
WHERE ...
不幸的是,该查询的结果与期望的不同
SELECT *
FROM foo
INNER JOIN bar ON ...
INNER JOIN baz ON ...
RIGHT OUTER JOIN something s ON ...
WHERE ...
我试图更改 GetBaseCriteria 中别名的顺序 - 但没有运气......