我有下面的問題: 我必須表SalesHeader和SalesPosition - 其中SalesPosition是SalesHeader的孩子。 現在。在表SalesHeader中,有一個持久化的實體X.我現在嘗試在SalesPosition中堅持一個實體,只給這個實體X的鍵(SalesHeader)。 NHibernate不需要在SalesHeader中保存一些數據。現在,當我將實體刷新到SalesPosition時,我成爲下面的例外:NHibernate - 保存孩子 - 只從父母設置密鑰
對象引用未保存的瞬態實例 - 在刷新之前保存瞬態實例。
在NHibernate.Engine.ForeignKeys.GetEntityIdentifierIfNotUnsaved(字符串的entityName,對象實體,ISessionImplementor會議) 在NHibernate.Type.EntityType.GetIdentifier(對象的值,ISessionImplementor會議) 在NHibernate.Type.ManyToOneType.IsDirty(舊對象,對象當前,布爾[]可檢查,ISessionImplementor會話) 在NHibernate.Type.TypeFactory.FindDirty(StandardProperty []屬性,對象[] x,對象[] y,布爾[] [] includeColumns,布爾anyUninitializedProperties,ISessionImplementor會話)在NHibernate.Persister.Entity.AbstractEntityPersister.FindDirty(Object [] currentState,Object [] previousState,Object entity,ISessionImplementor session)中的 at 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()
這是我的媽媽SalesPosition的pping:
<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映射是錯誤的,因爲您正在執行映射,就好像它是多對一多種關係。 – 2010-05-23 14:49:35