我使用 Enterprise Library,但遇到一个问题:
string sql = "
UPDATE StackOverflow SET UserName = @UserName
WHERE Id = @Id
";
DbCommand cmd = base.Database.GetSqlStringCommand(sql);
base.Database.AddInParameter(cmd, "Id", DbType.Int32, StackOverflow.Id);
base.Database.AddInParameter(cmd, "UserName", DbType.Int32, StackOverflow.UserName);
int val = Convert.ToInt32(base.Database.ExecuteScalar(cmd));
Convert.ToInt32(base.Database.ExecuteScalar(cmd)) //returns 0.
我读过这篇文章http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx
文章说:
如果插入新行,该函数返回新的标识列值,失败时返回 0。
但我没有插入该表 - 我只想更新并返回更新的行 ID。