我有一个休眠问题,我正在投影 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);
在这个 sql 中评估 q 结果
coalesce(this_.ItemText, this_.ItemText)
RHS中this_
的 需要是别名表
我可以使用 Projections.Alias(Projections.Property<TranslatedText>(tt => tt.ItemText), "ttAlias")
但不确定如何在JoinQueryOver
.
我也可以在那里创建一个别名,但看不到如何命名它。
TranslatedText ttAlias = null;
...
JoinQueryOver(ti => ti.TranslatedItems, () => ttAlias)