Свободный пользовательский SQL-запрос NHibernate - PullRequest
0 голосов
/ 03 марта 2011

Я новичок в 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%' ...

Сейчас я просто получаю список слов и генерирую предложение WHERE запроса SQL.Я создал ISQLQuery, но я не уверен, как его выполнить и вернуть коллекцию объектов Word.

1 Ответ

3 голосов
/ 03 марта 2011

Поскольку вы используете 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>();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...