2009-11-03 90 views
1

我正在尋找一種模式,可以在將記錄插入數據庫時​​用於父 - 子關係。由於子記錄需要父記錄先存在,我不得不使用討厭的東西,如存儲會話ID,然後在保存父記錄後更新外鍵。數據訪問設計模式

是否有任何知名的模式來解決這個問題。 Registers Gareth

+0

你調用存儲過程或插入/直接更新? 'session id'是什麼意思?父母和孩子同時被保存了嗎?你指的是哪個外鍵? – 2009-11-03 17:27:11

回答

0

你似乎要麼記錄孩子在他們的父母之前,或在同一時間,這是可能的,但有點奇怪。你的數據模型建議孩子知道他們的父母,因此,這些數據表明父母要插在孩子面前。您可能無法在單個查詢中實現此功能,因爲您所說的外鍵指的是同一個表(A.parent -> A.id)。

0

這聽起來像你沒有使用像NHibernate或Hibernate這樣的框架,並且你正在自己推出這很好,但如果你有這個選項,你可能想看看現有的OR映射框架。如果你滾你自己的,你需要做的鏈接插入,那麼你會在你的倉庫做這些使用事務,所以作爲一個例子:

public class ParentRepository 
{ 
    public void Save(Parent parent) 
    { 
     using (TransactionScope scope = new TransactionScope()) 
     { 
      //Add you database code here to insert to both tables in a transaction 
     } 
    } 
} 
+0

NHibernate的+1,但我不認爲如何TransactionScope將有所幫助,所以-1爲該 – zvolkov 2009-11-03 18:03:57

+1

TransactionScope幫助,因爲如果你有一個對象的層次結構,你有一個父對象包含一個子對象,你插入一個新的記錄你希望確保數據的完整性。在事務中執行此操作將確保當您插入父項並且子項失敗時,事務將回滾並保持數據庫的完整性。 – 2009-11-03 18:38:09