我有2个实体OrganisationMember
和User
OrganisationMember
有一个名为User
的{{1}}对象属性。
我正在尝试编写一个NHibernate查询,它将通过User
属性执行不区分大小写的索引...(用户在各种情况下将电子邮件键入系统)。
我已经看到你可以使用SQLFunction Projection来基本上大写数据库中的所有内容并按顺序排序。但我无法将其应用于子对象。这是我到目前为止所拥有的。
User.Email
它一直告诉我它不知道投影中的“电子邮件”是什么。我也尝试将投影改为
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();
有什么想法吗?
答案 0 :(得分:1)
你必须:
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
。没有隐式连接。