Объекты контекста, созданные Entity Framework, не являются потокобезопасными.Entity Framework Thread Safety
Что делать, если я использую два отдельных контекста объекта, по одному для каждого потока (и для каждого вызова - SaveChanges()
) - будет ли это потокобезопасным?
// this method is called from several threads concurrently
public void IncrementProperty()
{
var context = new MyEntities();
context.SomeObject.SomeIntProperty++;
context.SaveChanges();
}
Я считаю, что основа сущности контекст реализует какое-то переменный «счетчик», который отслеживает ли текущие значения в контексте свежие или нет.
- С кодом, указанным выше - из отдельных потоков - мне все еще нужно блокировать инкремент/savechanges?
- Если да, то какой предпочтительный способ выполнить это в этом простом сценарии?
* "Контекст объектов генерируется Entity Framework не являются потокобезопасными. * * - почему вы так говорите? – 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