Enfin trouvé la solution après avoir lu le manuel ci-dessoushttps://downloads.mysql. com/docs/connector-net-fr.pdf
Il existe une option de connexion appelée Utiliser les lignes affectées, UseAffectedRows
Sa valeur par défaut est définie sur false.
Et la description dit :
Lorsqu'ils sont utilisés; Ne définit pas l'indicateur CLIENT_FOUND_ROWS lors de la connexion au serveur
Il semble que MySQL Workbench et la ligne de commande MySQL n'utilisent pas l'indicateur CLIENT_FOUND_ROWS lors de la connexion, alors que le connecteur MySql .Net l'utilise par défaut.
À partir du document INSERT ... ON DUPLICATE KEY UPDATE à https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html
Solution :ajoutez ceci à la chaîne de connexion
Use Affected Rows=true