Weiter Subsonic3 Abfrage gibt mir eine Fehlermeldung:Subsonic3 SetExpression Problem
Db.Update<Tag>()
.SetExpression("Popularity")
.EqualTo("Popularity+1")
.Where<Tag>(x => x.TagId == tagId)
.Execute();
Fehler: Fehler: System.FormatException: Fehler beim Parameterwert aus einem String in ein Int32 zu konvertieren.
Die sql, die generiert wird, ist in Ordnung, aber die Sammlung von Parametern enthält zwei Parameter, die festgelegt werden müssen.
UPDATE [Tagging].[Tag]
SET Popularity=Popularity+1
WHERE [Tagging].[Tag].[TagId] = @0
Einer der Parameter @up_Popularity auf 'Popularity + 1' gesetzt. Da dies der erste Parameter ist, der gesetzt wird, wird dieser String 'Popularity + 1' einer ganzen Zahl zugewiesen.
Ist das ein Fehler oder mache ich etwas falsch?
Rob, es scheint ein Fehler zu sein, der besagt "Kann das Symbol wo nicht auflösen". Anscheinend gibt SetExpression eine Setting-Instanz und keine Update-Instanz zurück. –
Diese Frage http://stackoverflow.com/questions/2429381/atomically-increment-a-field-using-subsonic-3-activerecord behebt das gleiche Problem, aber die vorgeschlagene Lösung funktioniert auch nicht (dann bekomme ich den Fehler oben in meiner Frage). –
Btw, Ich arbeite an dem neuesten Code (von GitHub). –