Подстановочный знак nhibernate CreateCriteria
В SQL могу написать
SELECT blah FROM Clients
Where @p1 Like '%'+lastname+'%'
Как мне представить это с помощью CreateCriteria в Nhibernate?
я пробовал s.CreateCriteria<Client>.Add(Restrictions.Where<Client>(c => "something".Contains(c.LastName))
но получите ошибку
System.Exception: нераспознанный вызов метода: System.String:Boolean Contains(System.String)\r\n в NHibernate.Impl.ExpressionProcessor.ProcessCustomMethodCall(MethodCallExpression methodCallExpression)
Я также пытался
s.CreateCriteria<Client>.Add(Restrictions.Where<Client>(c => "something".IndexOf(c.LastName) != -1))
но получить
"переменная 'c' типа 'TrinityFinance.Data.Entities.Client' указана из области видимости ', но она не определена"
Обратите внимание, порядок важен здесь.
@p1 Like '%'+lastname+'%'
это не то же самое, что
lastname Like '%'+@p1+'%'
3 ответа
Благодаря другу я решил свою проблему.
var searchCriteria = GetSession().CreateCriteria<Client>();
searchCriteria.Add(Expression.Sql(string.Format("'{0}' like '%' + {1} + '%'", p.ClientInputText,p.DbField)));
var results = searchCriteria.List<Client>();
s.CreateCriteria<Client>().Add(
Restrictions.InsensitiveLike( "LastName", "something", MatchMode.Anywhere))
Поиск без учета регистра%Like%
Criteria criteria = session.createCriteria(Any.class);
criteria.add(Restrictions.ilike(propertyName, value, MatchMode.ANYWHERE);
criteria.list();