2008-09-23 32 views
2

我使用ASP.Net與NHibernate訪問Pgsql數據庫。NHibernate自動更新袋

對於我們的一些對象,我們使用NHibernate包,它映射到我們的應用程序中的List對象。有時候我們需要通過NHibernate來刷新對象,當我們更新數據庫中的列表時會遇到問題。

<bag name="Objects" inverse="true" lazy="true" generic="true" > 
    <key column="object_id" /> 
    <one-to-many class="Object" /> 
</bag> 

以上是我用於購物袋的代碼示例。

我想知道是否有人在任何地方遇到過這個問題,以及您如何解決此問題?

+0

你能說些什麼問題?與會話相關嗎? – chrissie1 2008-09-23 12:18:43

回答

4

你有沒有嘗試NHibernate級聯,如保存更新?

你可以告訴NHibernate自動遍歷一個實體的關聯,並根據cascade選項進行操作。例如,使用save-update cascade將未保存的實體添加到集合將導致它與其父對象一起保存,而無需我們的明確指示。

下面是每個級聯選項意味着:

  • 沒有 - 不要做任何級聯,讓用戶處理他們
  • 保存更新 - 當對象被保存/更新,檢查關聯並保存/更新任何需要它的對象(包括在多對多場景中保存/更新關聯)。
  • 刪除 - 刪除對象時,刪除關聯中的所有對象。
  • 刪除孤兒 - 刪除對象時,刪除關聯中的所有對象。除此之外,當一個對象從關聯中刪除並且不與另一個對象(孤立的)關聯時,也將其刪除。
  • 全部 - 當對象被保存/更新/刪除時,檢查關聯並保存/更新/刪除找到的所有對象。
  • 所有刪除孤兒 - 當一個對象被保存/更新/刪除時,檢查關聯並保存/更新/刪除找到的所有對象。除此之外,當一個對象從關聯中刪除並且不與另一個對象(孤立的)關聯時,也將其刪除。

此處瞭解詳情: NHibernate Cascades: the different between all, all-delete-orphans and save-update