이 다음 생성 된 데이터 어댑터입니다 :질문에 데이터 어댑터 (UpdateCommand)
this._adapter.UpdateCommand.CommandText = @"
UPDATE [dbo].[Currency2] SET [cid1] = @cid1, [cid2] = @cid2, [m] = @m
WHERE (([id] = @Original_id)
AND ([cid1] = @Original_cid1)
AND ([cid2] = @Original_cid2)
AND ([m] = @Original_m));
SELECT id, cid1, cid2, m
FROM Currency2
WHERE (cid1 = @cid1) AND (cid2 = @cid2) AND (id = @id)";
이 공식적인 정의에 따라 낙관적 동시성을 구현 where 절인가?
내 생각에 SELECT의 목적은 업데이트 된 행의 수를 반환하는 것이지만 COUNT (*)를 사용하지 않는 이유는 무엇입니까?
업데이트 : 여기 생성 된 업데이트 코드는 (2)에서 SELECT에 대한 아이디어를 제공합니다. 해당 쿼리가 무엇
public virtual int Update(int cid1, int cid2, decimal m, int Original_id, int Original_cid1, int Original_cid2, decimal Original_m, int id) {
this.Adapter.UpdateCommand.Parameters[0].Value = ((int)(cid1));
this.Adapter.UpdateCommand.Parameters[1].Value = ((int)(cid2));
this.Adapter.UpdateCommand.Parameters[2].Value = ((decimal)(m));
this.Adapter.UpdateCommand.Parameters[3].Value = ((int)(Original_id));
this.Adapter.UpdateCommand.Parameters[4].Value = ((int)(Original_cid1));
this.Adapter.UpdateCommand.Parameters[5].Value = ((int)(Original_cid2));
this.Adapter.UpdateCommand.Parameters[6].Value = ((decimal)(Original_m));
this.Adapter.UpdateCommand.Parameters[7].Value = ((int)(id));
global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State;
if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open)
!= global::System.Data.ConnectionState.Open)) {
this.Adapter.UpdateCommand.Connection.Open();
}
try {
int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery();
return returnValue;
}
finally {
if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
this.Adapter.UpdateCommand.Connection.Close();
}
}
}
생성 된 업데이트에서 ExecuteNonQuery를 호출하는 코드를 추가했습니다 ... SQL은 다른 곳에서는 참조 할 수없는 ... –