Solución:
He tenido este problema antes y el problema era que el lector debía cerrarse. Prueba esto:
public foo Dequeue(SqlConnection connection, SqlTransaction transaction)
{
using (var command = new SqlCommand(DEQUEUE_SPROC, connection) {CommandType = CommandType.StoredProcedure, Transaction = transaction})
{
var reader = command.ExecuteReader();
if (reader.HasRows)
{
reader.Read();
ID = (Guid) reader["ID"];
Name = reader["Name"].ToString();
reader.Close();//Closing the reader
return this;
}
return null;
}
}
public string GetFilePathUri(SqlConnection connection, SqlTransaction transaction)
{
string filePathUri = "";
using (var command = new SqlCommand(FILEPATH_SPROC, connection) {CommandType = CommandType.StoredProcedure, Transaction = transaction})
{
var reader = command.ExecuteReader();
if (reader.HasRows)
{
reader.Read();
filePathUri = reader["Path"].ToString();
}
reader.Close();//Closing the reader
}
return filePathUri;
}
Tuve este problema cuando olvidé usar await en un método asíncrono que estaba haciendo la llamada a la base de datos: la conexión se estaba eliminando mientras se ejecutaba la transacción porque el programa no estaba esperando a que se completara la consulta antes de intentar eliminar todo.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)