2012-06-07 58 views
0

我正在使用Entitiy框架並遇到了一個奇怪的問題。 我正試圖將一個集合保存到數據庫(比如:Collection of Rounds)。 現在,這個集合中的每個項目都有一組子元素(比如:事件集合)。以特定順序保存實體

這將是這個樣子:

Round 1 
    (No Child Elements) 
Round 2 
    Event 1 
    Event 2 
    Event 3 
Round 3 
    (No Child Elements) 
Round 4 
    Event 1 
    Event 2 

正如上面顯示是沒有必要的父對象將永遠有一個子集合。

現在,這裏是問題: 我的要求是,我想保存數據,因爲我已經將它添加到集合中。 但是,保存EF會首先保存具有子集合的項目,因此保存後會修改訂單。 因此,在數據庫中,第2輪首先被保存,然後其他的被隨機保存。

有什麼辦法強制EF保存按我構建的順序收集Rounds? 應該一直留有從第一輪開始,並應保存回合4

謝謝你們結束:)

+0

AFAIK EF不會保證收集元素的插入順序。如果您確實需要保證訂單,則可能需要每輪執行一次保存。我可能是錯的,但這是我懷疑的。 –

回答

4

無論是數據庫或EF保證訂貨。同樣,如果您查詢數據庫,則不必按預期順序獲取元素。如果您需要確切訂單,則必須添加附加列以保留記錄的訂購價值,並在檢索數據時使用OrderBy擴展方法。

SaveChanges執行的操作順序完全由EF控制。你不能改變它。

+0

很高興你來到EF問題Ladislav。 –