这是实际模式的简化示例,请多多包涵。我有一个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同一张表上。
有任何想法吗?