Ошибка распознавания при использовании nolock в запросе гибернации - PullRequest
2 голосов
/ 11 марта 2019

У меня есть простой запрос гибернации с nolock, используемым в запросе. Я получаю сообщение об ошибке - произошла ошибка распознавания, и ошибка режима гибернации - исключение: «NHibernate.Hql.Ast.ANTLR.QuerySyntaxException» в NHibernate.dll. это работает без Nolock. Я не хочу использовать

<property name="connection.isolation">ReadUncommitted</property>

, потому что я должен применить nolock только к определенной таблице.

ниже hql запрос -

select d from Users d with (nolock) where d.Userid = 2 

Я что-то упустил?

1 Ответ

1 голос
/ 11 марта 2019

HQL не будет поддерживать прямой with (nolock).Но мы можем использовать собственный SQL-запрос.

Так, например, вместо чего-то вроде этого (получение списка пользователей):

var hql    = "select d from Users d with (nolock) where d.Userid = 2";
var query  = session.CreateQuery(sql);
var result = query.List<User>();

нам нужно будет использовать raw sql API

var sql    = "select d.* from schema.UserTable d with (nolock) where d.user_id = 2 ";
var query  = session.CreateSQLQuery(sql);
var result = query
    .AddEntity(typeof(User))
    .List<User>();

ВВ этом случае мы знаем, что по идентификатору будет возвращен только один пользователь. Мы можем использовать UniqueResult<> вместо Список

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...