2012-03-19 68 views
1

必須通過創建它們的相同線程來保存EF4實體嗎? 我似乎失去了我的更改,或者我的代碼拋出了ObjectContext異常,我這樣做。必須通過創建它們的相同線程來保存EF4實體嗎?

我問的原因是,這似乎是我可以找到會導致問題的唯一條件。

如果是這樣,他們至少可以被其他線程修改,然後由創建線程保存?

回答

2

ObjectContext類不是線程安全的(請參閱msdn中的備註部分)。由於ObjectStateManager也不是線程安全的,所以修改實體附加到不同線程中的上下文也不可取。當其他線程訪問實體時,主線程可能已經處理了上下文,從而拋出了處置的異常。

您可以嘗試分離實體,然後修改其他線程中的實體並重新附加它們。推薦的做法是使用每個線程的上下文。

相關問題