2012-05-05 39 views
0

我們的EF知識庫模式對我們的EF和POCO首次安裝非常有效。但是,我們遇到了一個奇怪的問題,「集合已被修改;枚舉操作可能無法執行」。使用IRepository模式集合的POCO實體框架4在刪除時發生修改錯誤

基本上我們有一個對象集存儲庫如下:

protected IObjectSet<T> ObjectSet 
{ 
    get 
    { 
    if (_objectSet == null) 
    { 
     _objectSet = this.Context.CreateObjectSet<T>(); 
    } 

    return _objectSet; 
    } 
} 

和在其上爲實現IRepository類刪除方法如下:

public void Delete(T entity) 
{ 
    ObjectSet.DeleteObject(entity); 
} 

這一切都非常簡單,我們」到目前爲止,ve沒有問題,但每當我們嘗試刪除一個集合的對象時,我們都會得到這個錯誤。如果我將Delete方法上的斷點懸停在ObjectSet上並展開結果以便它們全部加載,那麼DeleteObject可以正常工作,但是如果所有項目都不是從ObjectSet加載的,則它將失敗並收集修改後的錯誤。

我建立了一個不使用POCO或IRepository的測試平臺,它工作的很好,所以基本上有一些真正obbvious,我失蹤了。我們在多個項目中使用這種模式非常深入,人們一直在努力解決這個問題,而不是嘗試去解決這個問題,這是我不認爲的一種選擇。

非常感謝任何幫助或見解。

編輯:

這是很奇怪的,但是當我從這個錯誤消失模型中刪除某些實體,但我們有一個巨大的模型,我不能追查,因爲我第一次去除一切,但具體的表在刪除。有沒有人遇到過這個,我們使用繼承表(每種類型),但我不能證明這是問題。

第二個編輯:

OK我刪除一切從模型中,除了每個類型繼承的entites表併發生錯誤,當我刪除所有,但一個派生類型,並嘗試從它工作正常刪除。所以我的問題是任何人在使用每種類型繼承的表時都有這個問題?

+0

你有沒有相關的實體級聯?我幾次與POCO一起使用TPT,沒有任何問題。 –

+0

我已經提交了與複製問題的測試平臺連接。看看我回來了。 TPT之前我也沒有遇到過這個問題,所以可能不是直接的問題。 https://connect.microsoft.com/VisualStudio/feedback/details/740754/poco-entity-framework-4-with-irepository-pattern-collection-was-modified-error-on-delete#details – user351711

回答

0

這是實體框架中的一個錯誤。根據連接固定在4.5。