这是实际模式的简化示例,请多多包涵。我有一个foo
带有一个id
和一个value
列的表。还有一个bar
带有 FK 的foo
表,该表有一个extended_value
列。我想让 Foo 的类映射左加入 Bar 并尝试使用它的extended_value
列(如果存在),否则回退到 Foo 的value
.
这是我需要的SQL等价物:
select coalesce(b.extended_value, f.value) as value
from foo f
left join bar b on (b.id = f.id)
我在 NHibernate 之上使用 Fluent。这是我一直在尝试使用的:
Join("bar", m =>
{
m.Optional();
m.KeyColumn("id");
m.Map(foo => foo.Value).Formula("COALESCE(extended_value, value)");
});
但这失败了,因为生成的 SQL 期望两者都extended_value
在value
同一张表上。
有任何想法吗?