Saltar al contenido

El SqlParameter ya está contenido en otro SqlParameterCollection. ¿Es engañoso using () {}?

Solución:

Sospecho que SqlParameter “sabe” de qué comando forma parte y que esa información no se borra cuando se elimina el comando, pero es aclarado cuando llamas command.Parameters.Clear().

Personalmente, creo que evitaría reutilizar los objetos en primer lugar, pero depende de ti 🙂

El uso de bloques no asegura que un objeto sea “destruido”, simplemente que el Dispose() se llama al método. Lo que realmente hace depende de la implementación específica y, en este caso, claramente no vacía la colección. La idea es asegurarse de que los recursos no administrados que no serían limpiados por el recolector de basura se eliminen correctamente. Como la colección Parameters no es un recurso no administrado, no es del todo sorprendente que no se borre con el método dispose.

Añadiendo cmd.Parameters.Clear (); después de la ejecución debería estar bien.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *