2009-07-02 4 views
1

J'apprends SubSonic 2.2, et j'ai la requête suivante, mais il me semble que "Wrong" écrit mon expression ("count + 1") comme une chaîne.Subsonic 2.2 - Mise à jour avec expresssion - comment améliorer ma solution?

Est-ce que des experts peuvent suggérer une meilleure façon que cela?

  int records = new Update(Wordsfile.Schema) 
      .SetExpression(Wordsfile.CountColumn).EqualTo("count + 1") 
      .Where(Wordsfile.Columns.WordId).IsEqualTo(wordID) 
      .And(Wordsfile.Columns.FileId).IsEqualTo(fileID) 
      .Execute(); 

Il est la ligne: ".SetExpression (Wordsfile.CountColumn) .EqualTo ("count + 1")".

J'ai essayé: ".SetExpression (Wordsfile.CountColumn) .EqualTo (Wordsfile.Columns.Count + 1)", mais pas de joie.

Toutes les suggestions

Merci!

+0

je serais chercher la mise en correspondance Objet Wordsfile et le gérer d'une manière typée. Quelque chose comme fichier.Compte ++; file.Save(); –

Répondre

1

Essayez ceci:

.SetExpression(Wordsfile.CountColumn).EqualTo(Wordsfile.Columns.Count + " + 1") 
+0

Des trucs géniaux! Cela est certainement en cours d'amélioration, mais quelqu'un peut-il penser à un moyen d'y parvenir sans l'utilisation de chaînes de caractères? Je suppose que cela pourrait également être fait avec une sous-requête, mais cela semble un peu brouillon, lors de l'utilisation de SQL direct, la requête supplémentaire ne serait pas nécessaire. –

1

Les chaînes ne sont pas si mauvais et dans votre cas, il est assez des choses simples (« +1 »). Vous pouvez jeter un déclencheur là-dedans :) si vous vouliez ...

0

Essayez ceci:

.SetExpression("count").EqualTo("count + 1") 

Parce que dans update.cs, le code est:

public Setting SetExpression(TableSchema.TableColumn col) 

return CreateSetting(col.ColumnName, col.DataType, true); 
Questions connexes