Pregunta

No he trabajado con los parámetros de ADO.Net mucho. Estoy escribiendo un proveedor de datos de .NET personalizado (modelado en SqlClient), y tienen que poner en práctica la propiedad IsNullable en mi clase de parámetros, que hereda de DbParameter. Mi proveedor de datos no va a apoyar los procedimientos almacenados, por lo que sólo será el apoyo de entrada (estilo de sustitución) parámetros.

La documentación de MSDN son bastante claro sobre la funcionalidad de IsNullable, afirmando que "Obtiene o establece un valor que indica si el parámetro acepta valores nulos." Googlear convierte una gran cantidad de gente confundida sobre lo que hace IsNullable, diciendo que la fijación de IsNullable en false no se les prohíbe el uso de un parámetro un valor nulo, ya que habría esperado.

Con base en esto, estoy pensando que tal vez la propiedad IsNullable se refiere al uso de un procedimiento almacenado, y si es o no el parámetro del procedimiento almacenado es anulable, no si el valor del parámetro puede ser nulo.

En ese caso, ya que no habré procedimientos almacenados, mi aplicación solo puede ser:

        public override bool IsNullable { get { return false; } set {} }

Para evitar tener que jugar un poco con algo de código de prueba para ver cómo la implementación de obras de ISNULLABLE SqlParameter, te agradecería si alguien con experiencia en la escritura de código usando parámetros podría explicar IsNullable.

¿Fue útil?

Solución

La propiedad IsNullable es informativo. Es útil cuando una parte del código crea el parámetro y otro en realidad lo utiliza. Por ejemplo, el parámetro puede ser deriva automáticamente de la base de datos, en cuyo caso es útil para el programador para ser capaz de ver si o no un valor nulo es probable que sea aceptado.

Esta es mi comprensión de la propiedad IsNullable. Yo en realidad no sé de ninguna documentación que "demuestra" esto es realmente correcto.


apoyo de esta opinión sería la aplicación de la Oracle Oracle.DataAccess.Client.OracleParameter clase , donde su estado documentos:

  

IsNullable

     

Esta propiedad ya no es compatible.

Y es un hecho de que el valor de esta propiedad es irrelevante cuando la interfaz con Oracle 10 o 11 o 12, ya sea a través del controlador MS o el controlador de Oracle citada.

Comportamiento en otras bases de datos puede ser diferente, por supuesto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top