流畅的NHibernate自定义SQL查询

时间:2011-03-02 22:49:46

标签: sql nhibernate fluent-nhibernate

我是NHibernate和FNH的新手。我正在尝试在单个查询中查询多个可能的对象,我不确定最有效的查询是什么。我有一个单词词典:

public class Word
{
   public virtual int Id { get; set; }
   public virtual string Text { get; set; }
}

我想查询列表中包含的所有Word对象。我的SQL是:

SELECT (*) FROM dbo.Word WHERE Text LIKE 'word1%' OR Text LIKE 'word2%' ...

现在我只是获取单词列表并生成SQL查询的WHERE子句。我创建了一个ISQLQuery,但我不确定如何执行它并获取Word对象的集合。

1 个答案:

答案 0 :(得分:3)

由于您正在使用NHibernate,为什么不使用为您提供的工具,而不是编写可能易于SQL注入的自定义SQL。

public IList<Word> GetWords(IList<string> filters)
{
    var criteria = Session.CreateCriteria<Word>();
    var disjunction = Restrictions.Disjunction();
    foreach (var filter in filters)
    {
        disjunction.Add(Restrictions.Like("Text", filter, MatchMode.Start));
    }
    criteria.Add(disjunction);

    return criteria.List<Word>();
}