Почему этот запрос NHibernate Linq пытается выполнить оператор вставки? - PullRequest
2 голосов
/ 13 января 2010

Я сталкиваюсь с очень странной проблемой, интересно, видел ли кто-нибудь раньше. У меня есть часть моего метода Save () в репозитории, который будет искать и находить каждый связанный тег по его имени. Там есть строка, которая выглядит следующим образом.

var tagRepo = (from t in tagRepository.Query() where t.Name == tag.Name select t).SingleOrDefault();

Как только эта строка выполняется, она выдает это исключение

GenericADOException: could not insert: [Core.Domain.Model.Tag][SQL: INSERT INTO [Tag] (Name) VALUES (?); select SCOPE_IDENTITY()]]

Насколько я могу рассказать или понять о том, что здесь происходит, запрос Linq не должен выполнять оператор вставки. Есть идеи?

Спасибо.

1 Ответ

2 голосов
/ 13 января 2010

Я просто исправил это, поэтому я думал, что поделюсь ответом. Запрос был внутри другого сеанса. Так появились эти строки

using (var session = GetSession())
using (var transaction = session.BeginTransaction())

Создание сеанса и новой транзакции. После этого вызов .Query () фактически делал это.

return GetSession().Linq<T>().AsQueryable();

Так что он пытался получить еще один сеанс внутри моего существующего сеанса и транзакции. Я переместил запрос и обновления выше GetSession () и BeginTransaction (), и все работало правильно.

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