Tengo una función que pensé que había corregido la advertencia de CA2000 en Code Analysis, pero simplemente no desaparecerá. La advertencia está en SqlCommand. Esta es la función:C# Code Analysis CA2000
protected internal void LogUserSession(int? managerID)
{
using (var sqlCommand = new SqlCommand())
{
sqlCommand.SetCommand("usp_UserActivity_Create");
SqlParameter prmSessionID = new SqlParameter();
prmSessionID.ParameterName = "@sessionID";
prmSessionID.Direction = ParameterDirection.Input;
prmSessionID.SqlDbType = SqlDbType.VarChar;
prmSessionID.Size = 32;
prmSessionID.SetValue(SessionID);
SqlParameter prmUsername = new SqlParameter();
prmUsername.ParameterName = "@username";
prmUsername.Direction = ParameterDirection.Input;
prmUsername.SqlDbType = SqlDbType.VarChar;
prmUsername.Size = 32;
prmUsername.SetValue(Username);
SqlParameter prmLoginID = new SqlParameter();
prmLoginID.ParameterName = "@loginID";
prmLoginID.Direction = ParameterDirection.Output;
prmLoginID.SqlDbType = SqlDbType.Int;
sqlCommand.Parameters.Add(prmSessionID);
sqlCommand.Parameters.Add(prmUsername);
sqlCommand.Parameters.Add(prmLoginID);
using (sqlCommand.Connection = new SqlConnection(ConnectionStrings.MainApp))
{
sqlCommand.Connection.Open();
sqlCommand.ExecuteNonQueryTryCatch();
if (prmLoginID.Value != DBNull.Value) LoginID = Convert.ToInt32(prmLoginID.Value);
}
}
}
tengo otra función que me parece no es diferente, pero no tiene una advertencia CA2000 asociada a la misma. Aquí está esa función:
public static bool IsAvailable(string username)
{
using (var sqlCommand = new SqlCommand())
{
sqlCommand.SetCommand("usp_UsernameIsAvailable");
var prmUsername = new SqlParameter();
prmUsername.ParameterName = "@username";
prmUsername.Direction = ParameterDirection.Input;
prmUsername.SqlDbType = SqlDbType.VarChar;
prmUsername.Size = 32;
prmUsername.SetValue(username);
var prmReturnValue = new SqlParameter();
prmReturnValue.ParameterName = "@returnValue";
prmReturnValue.Direction = ParameterDirection.ReturnValue;
prmReturnValue.SqlDbType = SqlDbType.Bit;
sqlCommand.Parameters.Add(prmUsername);
sqlCommand.Parameters.Add(prmReturnValue);
using (sqlCommand.Connection = new SqlConnection(ConnectionStrings.ComplianceApps))
{
sqlCommand.Connection.Open();
sqlCommand.ExecuteNonQueryTryCatch();
return Convert.ToBoolean(prmReturnValue.Value);
}
}
}
No entiendo lo que está pasando aquí y lo que tengo que hacer para solucionarlo.
¿Cuál es SessionID, por curiosidad? ¿Es solo una propiedad de cadena de la clase de la que es este método? –
No recibo una advertencia para su código con el análisis de código 'Microsoft All Rules'. – Phil
SessionID es el ID generado de la sesión que el usuario abre cuando golpea la aplicación. Es una referencia a la sesión real del usuario. – Chris