У меня проблема с nhibernate, когда я проецирую функцию sql Coalesce.
Я сравниваю два строковых свойства с одинаковым именем из двух разных сущностей. В полученном sql сравнивается одно и то же свойство только с первой сущностью:
var list = Projections.ProjectionList();
list.Add(
Projections.SqlFunction("Coalesce",
NHibernateUtil.String,
Projections.Property<TranslatedText>(tt => tt.ItemText),
Projections.Property<TextItem>(ti => ti.ItemText)));
var q = Session.QueryOver<TextItem>()
.Left.JoinQueryOver(ti => ti.TranslatedItems);
Оценка результатов q в этом sql
coalesce(this_.ItemText, this_.ItemText)
this_
в RHS должен быть таблицей с псевдонимом
Я могу использовать Projections.Alias(Projections.Property<TranslatedText>(tt => tt.ItemText), "ttAlias")
, но я не уверен, как отобразить "ttAlias" в JoinQueryOver
.
Я тоже могу создать псевдоним, но не знаю, как его назвать.
TranslatedText ttAlias = null;
...
JoinQueryOver(ti => ti.TranslatedItems, () => ttAlias)