У меня есть следующая проблема:
У меня есть таблицы SalesHeader и SalesPosition - где SalesPosition является дочерним по отношению к SalesHeader.
Сейчас. В таблице SalesHeader есть постоянная сущность X. Сейчас я пытаюсь сохранить сущность в SalesPosition, предоставив только этой сущности ключ к X (из SalesHeader). NHibernate не должен сохранять некоторые данные в SalesHeader. Теперь, когда я сбрасываю сущность в SalesPosition, я получаю следующее исключение:
объект ссылается на несохраненный временный экземпляр - сохраните временный экземпляр перед сбросом.
в NHibernate.Engine.ForeignKeys.GetEntityIdentifierIfNotUnsaved (String entityName, Object entity, сеанс ISessionImplementor)
в NHibernate.Type.EntityType.GetIdentifier (значение объекта, сеанс ISessionImplementor)
в NHibernate.Type.ManyToOneType.IsDirty (объект старый, объект текущий, логический [] проверяемый, сеанс ISessionImplementor)
в NHibernate.Type.TypeFactory.FindDirty (свойства StandardProperty [], Object [] x, Object [] y, Boolean [] [] includeColumns, логические anyUninitializedProperties, сеанс ISessionImplementor)
в NHibernate.Persister.Entity.AbstractEntityPersister.FindDirty (Object [] currentState, Object [] previousState, Объектный объект, сеанс ISessionImplementor)
в NHibernate.Event.Default.DefaultFlushEntityEventListener.DirtyCheck (событие FlushEntityEvent)
в NHibernate.Event.Default.DefaultFlushEntityEventListener.IsUpdateNeeded (событие FlushEntityEvent, Boolean mightBeDirty)
в NHibernate.Event.Default.DefaultFlushEntityEventListener.OnFlushEntity (событие FlushEntityEvent)
в NHibernate.Event.Default.AbstractFlushingEventListener.FlushEntities (событие FlushEvent)
в NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions (событие FlushEvent)
в NHibernate.Event.Default.DefaultFlushEventListener.OnFlush (событие FlushEvent)
в NHibernate.Impl.SessionImpl.Flush ()
в NHibernate.Transaction.AdoTransaction.Commit ()
это мое отображение SalesPosition:
<class name="SalesPosition" table="SalesPosition" lazy="false" >
<id name="Id" column="Id" type="Guid">
<generator class="assigned"/>
</id>
<version name="ObjectVersion" column="ObjectVersion"/>
.... some fields
<many-to-one name="SalesHeader" class="SalesHeader" foreign-key="FK_SalesHeader_SalesPosition" >
<column name="SalesHeaderId"/>
</many-to-one>
</class>
и это отображение SalesHeader:
<class name="SalesHeader" table="SalesHeader" lazy="false" >
<id name="Id" column="Id" type="Guid">
<generator class="assigned"/>
</id>
<version name="ObjectVersion" column="ObjectVersion"/>
... some fields
<set name="SalesPosition" lazy="true" inverse="true" cascade="delete" >
<key>
<column name="SalesHeaderId"/>
</key>
<one-to-many class="SalesPosition"/>
</set>
</class>
Кто-нибудь может дать мне совет, что я должен сделать, что я могу дать ключ SalesHeader только для SalesPosition-Entity для сохранения (или SalesHeader-Entity и NHibernate использует только ключ).
Я использую новейшую версию NHibernate.
Спасибо.
С наилучшими пожеланиями, Томас