アトミック亜音速の3のActiveRecordを使用してフィールドをインクリメント
-
19-09-2019 - |
質問
私は亜音速3のActiveRecordを使用してMySQLデータベースのフィールドをインクリメントするトリングです。 SQLでは、これは私が後だものです。
UPDATE people SET messages_received=messages_received+1 WHERE people_id=@id_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 people_id=@id_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();
解決
あなたはこのために、古いクエリツールを使用して、「SetExpression」を使用することができます:
db.Update("MyTable")
.SetExpression("messages_received +1")
.Where("people_id")
.IsEqualTo(1)
.Execute();
これは、フリーハンドだ - しかし、うまくいけば、あなたのアイデアを得る:)
所属していません StackOverflow