2010-07-26 99 views
0

我一直在挖掘在這裏和谷歌的帖子,找不到任何幫助我解決問題,我已經與一個現有的實體上保存子實體。實體框架一對多關係保存問題

比方說,我有一個購物車,將持有物品,這意味着我有一個ShoppingCart實體,它具有ShoppingCartItem實體集合。

在我的控制器中,我檢查ShoppingCart是否存在並檢索實體(如果有的話)。如果不是,它是一個新的實體(Entitystate被標記爲已添加)。 然後,我繼續添加項目到現有的集合(如果有任何項目已在那裏) 我現在的問題是,當我保存更改已創建的ShoppingCart: 它正在數據庫中添加一個新的購物車與現有的項目和新的項目...

所以,如果我有一個Shoppingcart和兩個孩子,我現在添加3個新項目,我最終在ShoppingCart表中有兩個ShoppingCart條目和7個ShoppingCartItem條目..

我追蹤了代碼,並且ShoppingCart實體被標記爲添加,只要使用AddObject()添加了新的ShoppingCartItem ...

我該如何預防?

非常感謝,

斯蒂芬

回答

1

最簡單的辦法是中檢索與細節實體現有的購物車,然後不執行任何ADDOBJECT電話。改爲調用SaveChanges()方法,這會將更改寫入數據庫而不創建新的ShoppingCart實體。

+0

嗨Devart, 我終於通過重新設計工作是如何建立的。 我首先創建了購物車,沒有任何物品,因爲我需要保存它,然後將新創建的購物車的ShoppingCart ID分配給我想創建的每個物品,並且瞧! 如果我想添加新的項目,購物車的創建是簡單的跳過,一切都像一個魅力和更分離! 但是我會在一個測試項目中嘗試一下你的建議,看看這會是一個有用的技術,以後再用於其他事情! 非常感謝! – 2010-07-28 12:11:21