C# EF4实体必须由创建它们的同一线程保存吗?
EF4实体必须由创建它们的同一线程保存吗? 我似乎丢失了更改,或者我的代码抛出了ObjectContext异常 我问的原因是,这似乎是我能找到的唯一会引起问题的条件C# EF4实体必须由创建它们的同一线程保存吗?,c#,.net,multithreading,entity-framework,C#,.net,Multithreading,Entity Framework,EF4实体必须由创建它们的同一线程保存吗? 我似乎丢失了更改,或者我的代码抛出了ObjectContext异常 我问的原因是,这似乎是我能找到的唯一会引起问题的条件 如果是这种情况,是否至少可以由其他线程修改它们,然后由创建线程保存?ObjectContext类不是线程安全的(请参阅中的备注部分)。修改附加到不同线程中上下文的实体也是不可取的,因为ObjectStateManager也不是线程安全的。当其他线程正在访问实体时,主线程可能已经释放了上下文,从而抛出已释放的异常 您可以尝试分离实体,
如果是这种情况,是否至少可以由其他线程修改它们,然后由创建线程保存?
ObjectContext
类不是线程安全的(请参阅中的备注部分)。修改附加到不同线程中上下文的实体也是不可取的,因为ObjectStateManager也不是线程安全的。当其他线程正在访问实体时,主线程可能已经释放了上下文,从而抛出已释放的异常
您可以尝试分离实体,然后在其他线程中修改实体并重新附着它们。建议的做法是每个线程使用上下文