NHibernate OrderBy 子对象上的投影
本文关键字:投影 对象 OrderBy NHibernate | 更新日期: 2023-09-27 18:31:08
我有 2 个实体OrganisationMember
和User
OrganisationMember
具有一个名为 User
的对象属性
User
。我正在尝试编写一个 NHibernate 查询,它将对 User.Email
属性执行不区分大小写的 sory...(用户在各种情况下在系统中输入电子邮件)。
我已经看到您可以使用 SQLFunction 投影基本上将数据库中的所有内容大写并按此排序。 但是我在将其应用于子对象时遇到问题。这是我到目前为止所拥有的。
var query = Session.QueryOver<OrganisationMembership>();
query.RootCriteria.SetFetchMode("User", FetchMode.Eager);
var projection = Projections.SqlFunction("UPPER", NHibernateUtil.String, Projections.Property("Email"));
query.OrderBy(projection).Asc();
它一直告诉我,它不知道投影中的"电子邮件"是什么。我还尝试将投影更改为
var projection = Projections.SqlFunction("UPPER", NHibernateUtil.String, Projections.Property("User.Email"));
有什么想法吗?
您必须:
User user = null;
query.JoinAlias(p => p.User, () => user);
相当于
query.JoinAlias(p => p.User, () => user, JoinType.InnerJoin);
然后
projection = Projections.SqlFunction("UPPER",
NHibernateUtil.String,
Projections.Property(() => user.Email));
在NHibernate中,您始终必须明确地进行Joins
。没有隐式联接。