znalazłem an MSDN article który opisuje jak EF obsługuje współbieżności podczas zapisywania zmian:Optymistyczna współbieżność w ADO.NET Entity Framework
Domyślnie [...] Usługi obiektu oszczędza obiektowi zmian w bazie danych bez kontroli dla współbieżności. Dla właściwości, które mogą wystąpić na wysoki stopień współbieżności, zalecamy własnością podmiotu być zdefiniowane w koncepcyjnym warstwy z atrybutem ConcurrencyMode = „stałej”
Mam dwa pytania:
nie mając właściwości w moim modelu, w którym
ConcurrencyMode="fixed"
, czy jest to bezpieczne dla mnie założenie, że jeśli kiedykolwiekOptimisticConcurrencyException
jest wyrzucany podczas zapisywania zmian, to dlatego, że jednostka nie dłuższych exis ts w składnicy danych, tj. został usunięty przez innego użytkownika lub coś mi brakuje?Wyobrażam EF wykonujący takie
UPDATE
-statement, który wygląda mniej więcej tak, co, jak ja to widzę, spowoduje tylkoOptimisticConcurrencyException
zostać wyrzucony, jeśli osoba z ID = 1 nie istnieje:UPDATE Person SET FirstName = 'John' AND LastName = 'Smith' WHERE ID = 1
Podczas korzystania z
ConcurrencyMode="fixed"
, czy EF sprawdza współbieżność również podczas usuwania elementów? Innymi słowy, EF kiedykolwiek wykonaćDELETE
-statement który wygląda tak (z więcej niż tylko klucza podstawowego wWHERE
-clause):DELETE FROM Person WHERE ID = 1 AND LastName = 'Doe'
dobra odpowiedź. To była dokładnie ta informacja, której szukałem. Wielkie dzięki! – bernhof