After updating my solution from NHibernate 3.4.0GA to 4.0.3GA I have
problems with RowVersion whenever I SaveOrUpdate a *new* entity.
My mappings are created with the newest Version of FluentNHibernate (2.0.1).
public class MapMatrixColumn : ClassMap<EntMatrixColumn>
{
public MapMatrixColumn()
{
Table("MatrixColumn");
Id(x => x.Id)
.GeneratedBy.HiLo("1000")
.UnsavedValue(-1);
Version(x => x.RowVersion);
...
...
What irritates me most is that these "show stopping" errors have not been
reported by other users.
I tried out the older versions 4.0.0GA and 4.0.2GA too. The result was the
same.
At first my RowVersion was declared as Nullable<int>. No problem in NH
3.4.0. In NH 4 the following exception was thrown:
The object reference was not set to an instance of an object
at NHibernate.Type.Int32Type.Next(Object current, ISessionImplementor
session)
at NHibernate.Engine.Versioning.Increment(Object version, IVersionType
versionType, ISessionImplementor session)
at
NHibernate.Event.Default.DefaultFlushEntityEventListener.GetNextVersion(FlushEntityEvent
event)
at
NHibernate.Event.Default.DefaultFlushEntityEventListener.ScheduleUpdate(FlushEntityEvent
event)
at
NHibernate.Event.Default.DefaultFlushEntityEventListener.OnFlushEntity(FlushEntityEvent
event)
at
NHibernate.Event.Default.AbstractFlushingEventListener.FlushEntities(FlushEvent
event)
at
NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions(FlushEvent
event)
at
NHibernate.Event.Default.DefaultAutoFlushEventListener.OnAutoFlush(AutoFlushEvent
event)
at NHibernate.Impl.SessionImpl.AutoFlushIfRequired(ISet`1 querySpaces)
at NHibernate.Impl.SessionImpl.List(IQueryExpression queryExpression,
QueryParameters queryParameters, IList results)
at NHibernate.Impl.AbstractSessionImpl.List(IQueryExpression
queryExpression, QueryParameters parameters)
at NHibernate.Impl.AbstractQueryImpl2.List()
at NHibernate.Linq.DefaultQueryProvider.ExecuteQuery(NhLinqExpression
nhLinqExpression, IQuery query, NhLinqExpression nhQuery)
at NHibernate.Linq.DefaultQueryProvider.Execute(Expression expression)
at NHibernate.Linq.DefaultQueryProvider.Execute[TResult](Expression
expression)
at System.Linq.Queryable.Single[TSource](IQueryable`1 source)
Next I changed the declaration of RowVersion from Nullable<int> to int
resulting in a StaleObjectStateException:
Row was updated or deleted by another transaction (or unsaved-value mapping
was incorrect)
at NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object id,
Object[] fields, Object[] oldFields, Object rowId, Boolean[]
includeProperty, Int32 j, Object oldVersion, Object obj, SqlCommandInfo
sql, ISessionImplementor session)
at
NHibernate.Persister.Entity.AbstractEntityPersister.UpdateOrInsert(Object
id, Object[] fields, Object[] oldFields, Object rowId, Boolean[]
includeProperty, Int32 j, Object oldVersion, Object obj, SqlCommandInfo
sql, ISessionImplementor session)
at NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object id,
Object[] fields, Int32[] dirtyFields, Boolean hasDirtyCollection, Object[]
oldFields, Object oldVersion, Object obj, Object rowId, ISessionImplementor
session)
at NHibernate.Action.EntityUpdateAction.Execute()
at NHibernate.Engine.ActionQueue.Execute(IExecutable executable)
at NHibernate.Engine.ActionQueue.ExecuteActions(IList list)
at NHibernate.Engine.ActionQueue.ExecuteActions()
at
NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource
session)
at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent
event)
at NHibernate.Impl.SessionImpl.Flush()
at NHibernate.Transaction.AdoTransaction.Commit()
Any ideas? This exception makes absolutely no sense when trying to persist
a new entity.
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.