Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF4实体必须由创建它们的同一线程保存吗?_C#_.net_Multithreading_Entity Framework - Fatal编程技术网

C# EF4实体必须由创建它们的同一线程保存吗?

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

EF4实体必须由创建它们的同一线程保存吗? 我似乎丢失了更改,或者我的代码抛出了ObjectContext异常

我问的原因是,这似乎是我能找到的唯一会引起问题的条件


如果是这种情况,是否至少可以由其他线程修改它们,然后由创建线程保存?

ObjectContext
类不是线程安全的(请参阅中的备注部分)。修改附加到不同线程中上下文的实体也是不可取的,因为ObjectStateManager也不是线程安全的。当其他线程正在访问实体时,主线程可能已经释放了上下文,从而抛出已释放的异常

您可以尝试分离实体,然后在其他线程中修改实体并重新附着它们。建议的做法是每个线程使用上下文