Ce dont vous avez besoin est optimistic concurrency
sur votre déclaration UPDATE
, pour ne pas exclure certains champs. En bref, ce que cela signifie est lors de la mise à jour d'une table, une clause WHERE
est ajoutée à votre déclaration UPDATE
qui garantit que les valeurs des champs de la ligne sont effectivement ce qu'ils étaient lorsque le dernier SELECT
a été exécuté.
Ainsi, supposons que dans votre exemple, je choisis des données et les valeurs de A
et B
étaient 1
et 2
respectivement. Maintenant, supposons que je voulais mettre à jour B
(ci-dessous déclaration est juste un exemple):
UPDATE TestClass SET B = '3' WHERE Id = 1;
Cependant, au lieu de courir cette déclaration (parce qu'il n'y a pas de concurrence), exécutons celui-ci:
UPDATE TestClass SET B = '3' WHERE Id = 1 AND A = '1' AND B = '2';
Cette déclaration garantit désormais que l'enregistrement n'a été modifié par personne.
Cependant, pour l'instant, il ne semble pas que SimpleRepository de Subsonic supporte n'importe quel type de concurrence et que ça va être une chute majeure. Si vous cherchez une bibliothèque de dépôt très simple, où vous pouvez utiliser POCO, je recommanderais Dapper. En fait, Dapper est utilisé par Stackoverflow. C'est extrêmement rapide et vous permettra facilement de construire en concurrence dans vos instructions de mise à jour parce que vous envoyez des instructions SQL paramétrées, simples.
- Cet Stackoverflow article est un article général sur l'utilisation de Dapper pour toutes les opérations CRUD.
- Ce Stackoverflow article montre comment effectuer des insertions et des mises à jour avec Dapper.
REMARQUE: avec Dapper vous pouvez réellement faire ce que vous êtes désireux aussi bien parce que vous envoyez vers le bas des instructions SQL de base, mais je ne recommanderais pas de ne pas utiliser la concurrence.