Obiekty kontekstowe wygenerowane przez Entity Framework nie są wątkowo bezpieczne.Moduł Entity Framework Thread Bezpieczeństwo
Co się stanie, jeśli użyję dwóch oddzielnych kontekstów encji, po jednym dla każdego wątku (i zadzwonię pod numer SaveChanges()
) - czy będzie to bezpieczne dla wątków?
// this method is called from several threads concurrently
public void IncrementProperty()
{
var context = new MyEntities();
context.SomeObject.SomeIntProperty++;
context.SaveChanges();
}
wierzę kontekst ramy podmiot realizuje jakąś zmienną „przeciw”, który śledzi, czy aktualne wartości w kontekście są świeże, czy nie.
- Z powyższym kodem - wywołanym z oddzielnych wątków - czy nadal muszę blokować wokół przyrostów/zapisów?
- Jeśli tak, jaki jest preferowany sposób osiągnięcia tego w tym prostym scenariuszu?
* "The kontekst obiektów generowanych przez Struktura Entity nie jest bezpieczna dla wątków. "* - dlaczego tak mówisz? – RPM1984
Mam na myśli usługę MSDN: http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.aspx, gdzie jest napisane "Klasa ObjectContext nie jest bezpieczna dla wątków". – Harper
Tak, to właśnie myślałem, że masz na myśli - kontekst, a nie byty. Dlatego nigdy nie powinieneś używać singletonu dla OC. – RPM1984