我是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对象的集合。
答案 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>();
}