【发布时间】:2016-02-17 11:30:43
【问题描述】:
我有一个带有以下字符串列表的用户模型 -
private ISet<String> _mobileNumbers;
public virtual ISet<String> MobileNumbers
{
get { return _mobileNumbers ?? (_mobileNumbers = new HashedSet<String>()); }
set { _mobileNumbers = value; }
}
我需要在此表上编写 NHibernate QueryOver 以获取具有特定手机号码的用户列表。有点像 -
String mobileNumber = null;
Repository.QueryOver<User>()
.JoinAlias(u => u.MobileNumbers, () => mobileNumber)
.WhereRestrictionOn(() => mobileNumber)
.IsLike(searchedMobileNumber, MatchMode.Exact);
我曾想过为 MobileNumber 创建一个模型,或者编写一个 SQL 查询来做同样的事情。但是还有其他选择吗??
【问题讨论】:
-
你测试了吗?它有效吗?遗憾的是,在没有显式实体的情况下定义映射对于编写映射要简单得多,但对于编写查询要复杂得多。
-
不,它不起作用。它给出空指针异常。 :(
-
我已经做了一些测试......虽然在 HQL 中可以做到(参见 stackoverflow.com/a/23152387/613130),但在 QueryOver 中我认为这是不可能的。可能是缺少的功能。
-
应该在 LINQ 查询中工作以保持类型安全(与 HQL 相比)。
标签: sql nhibernate queryover