문제

나는 subsonic 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에 의지하지 않고이 작업을 수행 할 수 있는지 궁금합니다.

대답. 참고로, 아래의 Rob의 제안을 기반으로 ::

_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