J'ai trouvé an MSDN article qui décrit comment gère EF lors concurrency l'enregistrement des modifications:Optimiste dans concurrency ADO.NET Entity Framework
Par défaut [...] Object Services enregistre objet modifications à la base de données sans vérification pour la simultanéité. Pour propriétés qui pourraient éprouver un degré élevé de concurrence, nous recommandons soit défini la propriété d'entité dans la couche conceptuelle avec un attribut de ConcurrencyMode = « fixe »
J'ai deux questions:
Avoir aucune propriété dans mon modèle où
ConcurrencyMode="fixed"
, est-il sûr pour moi de penser que si jamais unOptimisticConcurrencyException
est jeté lors de l'enregistrement des modifications, il est dû au fait que l'entité ne exis ts dans le magasin de données, c'est-à-dire qu'il a été supprimé par un autre utilisateur, ou ai-je oublié quelque chose?j'imagine EF exécution d'un
UPDATE
-Déclaration qui ressemble à quelque chose comme ça, qui, comme je le vois, ne fera que provoquer unOptimisticConcurrencyException
à la levée si personne ID = 1 n'existe pas:UPDATE Person SET FirstName = 'John' AND LastName = 'Smith' WHERE ID = 1
Lors de l'utilisation de
ConcurrencyMode="fixed"
, EF vérifie-t-il la simultanéité lors de la suppression d'entités? En d'autres termes, exécutera EF jamais unDELETE
-Déclaration qui ressemble à ceci (avec plus que la clé primaire dans leWHERE
-clause):DELETE FROM Person WHERE ID = 1 AND LastName = 'Doe'
Bonne réponse. C'était exactement l'information que je cherchais. Merci beaucoup! – bernhof