1
必須通過創建它們的相同線程來保存EF4實體嗎? 我似乎失去了我的更改,或者我的代碼拋出了ObjectContext異常,我這樣做。必須通過創建它們的相同線程來保存EF4實體嗎?
我問的原因是,這似乎是我可以找到會導致問題的唯一條件。
如果是這樣,他們至少可以被其他線程修改,然後由創建線程保存?
必須通過創建它們的相同線程來保存EF4實體嗎? 我似乎失去了我的更改,或者我的代碼拋出了ObjectContext異常,我這樣做。必須通過創建它們的相同線程來保存EF4實體嗎?
我問的原因是,這似乎是我可以找到會導致問題的唯一條件。
如果是這樣,他們至少可以被其他線程修改,然後由創建線程保存?
ObjectContext
類不是線程安全的(請參閱msdn中的備註部分)。由於ObjectStateManager也不是線程安全的,所以修改實體附加到不同線程中的上下文也不可取。當其他線程訪問實體時,主線程可能已經處理了上下文,從而拋出了處置的異常。
您可以嘗試分離實體,然後修改其他線程中的實體並重新附加它們。推薦的做法是使用每個線程的上下文。