2011-07-23 39 views
0

我有一個非常簡單的情況,但我似乎無法得到我的頭;我有一個表促銷其中有很多網站網站可以使用不同的促銷和在我的(postgres)數據庫我有3個表;促銷活動,網站和promotions_sites。 在我的網絡應用程序中,用戶可以編輯促銷並添加網站的集合(新行分開)。因此,在保存中,網站的集合將保存在促銷中。這工作。仍然有2個問題; 1)舊網站的記錄不會被刪除(當一個人從網站的線) 2)在當前站點保存所有的原始站點重新創建流利的NHibernate;收集管理

刪除

我的問題是在哪個級別,我應該管理網站; 1)應用程序級別;剛剛刪除所有網站之前重新插入 2)數據級別;有沒有一個nhibernate配置來做到這一點? 3)數據庫級別;根據promotions_sites中缺少項目,在網站表上創建觸發器/級聯刪除

+0

你可以發佈你的這些實體的映射嗎? –

回答

0

首先是自動孤立刪除。 當您的關係定義爲many-to-many時,不能自動刪除站點。但是,如果你promotions_sites表映射爲獨立的實體,你必須在網站促銷 2個one-to-many關係,您可以通過這些關係設置級聯all-delete-orphan實現自動刪除。

第二件事 - 在哪裏管理集合。你應該讓NHibernate來做到這一點。假設你有適當的映射,你不應該關心它在應用程序級別,尤其是在數據庫觸發器級別。無論如何,在NHibernate中處理集合的邏輯在某種程度上是不同的,你可能從數據庫級熟悉。通常,您需要使用現有子集合加載父對象,修改集合並將更改提交回數據庫。你不應該取代整個集合。

但是,當您顯示用於保存更改的映射和代碼時,談話會更容易。