У меня возникает проблема: У меня есть таблицы SalesHeader и SalesPosition - где SalesPosition является дочерним элементом SalesHeader. Теперь. В таблице SalesHeader существует постоянная Entity X. Я пытаюсь теперь удерживать Entity в SalesPosition, предоставляя этому Entity ключу X (SalesHeader). NHibernate не должен сохранять некоторые данные в SalesHeader. Теперь, когда я очищаю объект до SalesPosition, я становлюсь побочным исключением:NHibernate - Сохранить ключ только для детей от родителя
Объект ссылается на несохраненный экземпляр переходного процесса - сохраняет временный экземпляр перед промывкой.
в NHibernate.Engine.ForeignKeys.GetEntityIdentifierIfNotUnsaved (String EntityName, объекта Object, ISessionImplementor сессия) в NHibernate.Type.EntityType.GetIdentifier (значение объекта, ISessionImplementor сессия) в NHibernate.Type.ManyToOneType.IsDirty (Object старый , Object current, Boolean [] checkable, сеанс ISessionImplementor) at NHibernate.Type.TypeFactory.FindDirty (свойства StandardProperty [], Object [] x, Object [] y, Boolean [] [] includeColumns, Boolean anyUninitializedProperties, сеанс ISessionImplementor) at NHibernate.Persister.Entity.AbstractEntityPersister.FindDirty (Object [] currentState, Object [] previousState, объект объекта, сеанс ISessionImplementor) в NHibernate.Event.Default.DefaultFlus hEntityEventListener.DirtyCheck (FlushEntityEvent событие) на NHibernate.Event.Default.DefaultFlushEntityEventListener.IsUpdateNecessary (FlushEntityEvent событие, булева 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()
это моя мама pping из 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.
спасибо.
С наилучшими пожеланиями, Томас
Извините, но на ваш вопрос трудно следовать. Все, что я могу сказать на данный момент: если SalesPosition является дочерним модулем SalesHeader (отношение «один ко многим», что-то вроде элементов счета и счета), ваше сопоставление для SalesHeader неверно, поскольку вы выполняете сопоставление, как если бы оно было многозначным -ное отношение. –