2010-01-08 5 views
3

Je me demande si la requête de mise à jour SQL suivante est possible en utilisant les commandes SubSonic équivalentes:équivalent SubSonic d'une mise à jour de SQL

UPDATE MYTABLE SET MYFIELD = MYFIELD + 3 WHERE ANOTHERFIELD = ANOTHERVALUE 

Je ne pouvais pas trouver un moyen approprié de faire référence au même champ avec l'objet Setting.

Toute aide à ce sujet sera grandement appréciée.

Cordialement,

Fernando

Répondre

2

Vous pouvez exécuter cette requête en utilisant l'objet QueryCommand de subsonique.

Vous pouvez trouver des échantillons similaires ici link et link

+0

Merci pour l'info, je pense que je peux y arriver en utilisant les échantillons sur le premier lien. – Fervelas

1

Oui - vous pouvez utiliser « UpdateExpression » - c'est une valeur de chaîne que vous passez avec l'outil de requête « simple ». Je n'ai pas le code ou l'échantillon en face de moi - il pourrait être "SetExpression" mais il vous permet de mettre à jour en utilisant une chaîne comme vous l'avez entré ici.

+0

Je vais y jeter un coup d'oeil, voir si je peux le faire fonctionner comme ça, merci! – Fervelas

1

J'ai fait un test en utilisant ce que vous avez dit sur SetExpression() mais je ne suis pas convaincu que je l'utilise correctement ... ça marche mais ça sent (et regarde) un peu drôle tu sais?

int count = new Update(MyTable.Schema).SetExpression("MyField").EqualTo("MyField + 20") 
.Where(....) 

Comme je l'ai dit, la mise à jour de travail, mais je ne sais pas si c'est la façon prévue de le faire, et si elle est (ou même si ce n'est pas), alors comment pourrais-je utiliser un paramètre au lieu de coder en dur la valeur dans l'expression.