使用亚音速3 ActiveRecord以原子方式递增字段

使用亚音速3 ActiveRecord以原子方式递增字段,activerecord,subsonic,subsonic3,subsonic-active-record,Activerecord,Subsonic,Subsonic3,Subsonic Active Record,我尝试使用亚音速3 ActiveRecord在MySQL数据库中增加一个字段。在SQL中,我追求的是: UPDATE people SET messages_received=messages_received+1 WHERE people_id=@id_to; 我尝试了以下方法,但似乎不起作用(您收到的消息似乎总是1): 所以我有了一个解决方案,但我只是想知道是否有可能不用简单的SQL就能做到这一点 回答。供参考,根据Rob的以下建议: _db.Update<person>()

我尝试使用亚音速3 ActiveRecord在MySQL数据库中增加一个字段。在SQL中,我追求的是:

UPDATE people SET messages_received=messages_received+1 WHERE people_id=@id_to;
我尝试了以下方法,但似乎不起作用(您收到的消息似乎总是1):

所以我有了一个解决方案,但我只是想知道是否有可能不用简单的SQL就能做到这一点

回答。供参考,根据Rob的以下建议:

_db.Update<person>()
    .SetExpression("messages_received").EqualTo("messages_received+1")
    .Where<person>(x=>x.people_id==idTo)
    .Execute();
\u db.Update()
.SetExpression(“收到的消息”).EqualTo(“收到的消息+1”)
.其中(x=>x.people\u id==idTo)
.Execute();

您可以使用旧的查询工具并使用“SetExpression”:


这是徒劳的-但希望你能得到这个想法:)

很酷,谢谢Rob,是的,你得到了这个想法,在上面发布了工作版本。
string sql="UPDATE people SET messages_received=messages_received+1 WHERE people_id=@id_to";
var q=new SubSonic.Query.QueryCommand(sql, _db.Provider);
q.AddParameter("id_to", idTo);
q.Provider.ExecuteQuery(q);
_db.Update<person>()
    .SetExpression("messages_received").EqualTo("messages_received+1")
    .Where<person>(x=>x.people_id==idTo)
    .Execute();
db.Update("MyTable")
   .SetExpression("messages_received +1")
   .Where("people_id")
   .IsEqualTo(1)
   .Execute();