实体框架生成的上下文对象不是线程安全的。实体框架线程安全
如果我使用两个单独的实体上下文,每个线程一个(并且每个线程都调用SaveChanges()
)会怎么样 - 这是线程安全的吗?
// this method is called from several threads concurrently
public void IncrementProperty()
{
var context = new MyEntities();
context.SomeObject.SomeIntProperty++;
context.SaveChanges();
}
我相信实体框架上下文实现某种'计数器'变量,用于跟踪上下文中的当前值是否是新鲜的。
- 上面的代码 - 从不同的线程调用 - 我仍然需要锁定增量/ savechanges吗?
- 如果是这样,那么在这个简单的场景中完成此操作的首选方法是什么?
*“的上下文对象所产生的改变你的资料库实体框架不是线程安全的。“* - 你为什么这么说? – RPM1984 2010-12-15 22:42:31
我指的是MSDN:http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.aspx它说“ObjectContext类不是线程安全的。” – Harper 2010-12-15 22:49:57
是的,这就是我认为你的意思 - 背景,而不是实体。这就是为什么你不应该为OC使用单身人士。 – RPM1984 2010-12-16 00:36:16