I am writing a project and using NHibernate 3.1
SimpleTest:
Forum forum = Session.CreateCriteria<Forum>().Add(Restrictions.Eq("UrlName", "reportabug")).UniqueResult<Forum>(); forum.TopicsCount++; IForumRepository forumRepository = new ForumRepository(SessionFactory); forumRepository.Update(forum); public virtual void Update(TEntity entity) { if (!session.Transaction.IsActive) { TResult result; using (var tx = session.BeginTransaction()) { session.SaveOrUpdate(entity) tx.Commit(); } return result; } session.SaveOrUpdate(entity) }
The latest update throws an exception:
StaleObjectStateException was unhandled by user code: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
SQL query:
UPDATE Forums SET Name = 'Forums Issues (not product support)' , UrlName = 'reportabug' , Description = 'Use this forum to report issues with the online forums application. When reporting an issue please include relevant details such as repro steps, error messages and browser version.' , CategoryId = 'b2cc232c-0d5c-4f35-bb6f-29c67d7d40c2' , TopicsCount = 1 WHERE ForumId = '864046b7-ca57-48c4-8a81-082103223527'
ForumId is correct. Maybe this is concurrency? Any ideas?
source share