質問

私は亜音速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();

これは、フリーハンドだ - しかし、うまくいけば、あなたのアイデアを得る:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top