Я пытаюсь увеличить поле в базе данных MySQL, используя SubSonic 3 ActiveRecord. В SQL, это то, что я после:Атомно увеличивайте поле с помощью SubSonic 3 ActiveRecord
UPDATE people SET messages_received=messages_received+1 WHERE [email protected]_to;
Я попытался следующие, но это, похоже, не работает (messages_received всегда казалось 1):
_db.Update<person>()
.Set("messages_received").EqualTo(x => x.messages_received == x.messages_received + 1)
.Where(x => x.people_id == idTo)
.Execute();
Это сделал работу :
string sql="UPDATE people SET messages_received=messages_received+1 WHERE [email protected]_to";
var q=new SubSonic.Query.QueryCommand(sql, _db.Provider);
q.AddParameter("id_to", idTo);
q.Provider.ExecuteQuery(q);
Так у меня есть решение, но я просто интересно, если это возможно, чтобы сделать это, не прибегая к простой SQL?
Ответить. Для справки, на основании предложения Роба ниже ::
_db.Update<person>()
.SetExpression("messages_received").EqualTo("messages_received+1")
.Where<person>(x=>x.people_id==idTo)
.Execute();
Прохладный, спасибо Роба, да, идея появилась, опубликовал рабочую версию выше. –