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();
    }

もちろん、私がやろうとしているのは、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 に答える