2

我对 NHibernate 比较陌生,所以这个应该很容易:

    public IList<Ad> Search(string query)
    {
        return unitOfWork.Session
            .QueryOver<Ad>()
            .JoinQueryOver<AdProperty>(x => x.Properties)
                .Where(ad => ad.Value.Contains(query))
            .List();
    }

当然,我要做的是搜索 Ads,其中 AdProperty 包含某个字符串,然后将相应的 Ad 对象作为结果传回。(我意识到这不会导致最佳查询,但现在就足够了)

问题

我不能使用 .Contains,因为它无法识别。那么我如何使用 NHibernate 正确地做到这一点?

我看过NHibernate 查询寻找相关对象的相关对象,但我无法让它发挥作用。

笔记

我正在使用 NHibernate 3.0+

4

1 回答 1

1

经过更多的摆弄,我得到了这个例子(上面提到的)工作。我将留下我的解决方案以供其他人参考。

    public IList<Ad> Search(string query)
    {
        return unitOfWork.Session
            .CreateCriteria<Ad>()
            .CreateAlias("Properties", "props")
            .Add(Expression.InsensitiveLike("props.Value", query, MatchMode.Anywhere))
            .List<Ad>();
    }

希望它可以帮助某人:-)

于 2012-07-17T23:28:06.840 回答