EF4实体必须由创建它们的同一个线程保存吗? 我似乎丢失了我的更改,或者我的代码抛出了我这样做的ObjectContext异常。
我问的原因是,这似乎是我能找到的唯一会导致问题的条件。
如果是这种情况,它们是否至少可以被其他线程修改,然后由创建线程保存?
答案 0 :(得分:2)
ObjectContext
类不是线程安全的(请参阅msdn中的备注部分)。由于ObjectStateManager也不是线程安全的,因此也不建议将实体附加修改为不同线程中的上下文。当其他线程正在访问实体时,主线程可能已经处置了上下文,从而抛出了已处置的异常。
您可以尝试分离实体,然后在其他线程中修改实体并重新附加它们。建议的做法是使用每个线程的上下文。