Question

Je n'ai pas travaillé avec des paramètres dans ADO.Net beaucoup. J'écris un fournisseur de données .Net personnalisées (sur le modèle SqlClient), et doivent mettre en œuvre la propriété IsNullable dans ma classe de paramètres, qui hérite de DbParameter. Mon fournisseur de données ne prennent en charge les procédures stockées, donc je ne voterai en faveur de paramètres d'entrée (style de substitution).

Les docs MSDN sont assez vagues sur la fonctionnalité de IsNullable, indiquant « Obtient ou définit une valeur qui indique si le paramètre accepte les valeurs NULL. » Googler se présente beaucoup de gens confus au sujet de ce que fait IsNullable, en disant que la mise en IsNullable à false ne les empêche pas d'utiliser un paramètre une valeur nulle, comme on aurait pu s'y attendre.

Sur cette base, je pense que peut-être la propriété IsNullable se rapporte à l'utilisation d'une procédure stockée, et si le paramètre de la procédure stockée ou non annulable, pas si la valeur du paramètre peut être NULL.

Dans ce cas, puisque je ne l'ai procédures stockées, ma mise en œuvre peut être juste:

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

Pour éviter d'avoir à bricoler avec un code de test pour voir comment la mise en œuvre de SqlParameter des œuvres IsNullable, je vous en serais reconnaissant si quelqu'un d'expérimenté dans le code d'écriture à l'aide des paramètres pourrait expliquer IsNullable.

Était-ce utile?

La solution

The IsNullable property is informational. It is helpful when one part of code creates the parameter and another actually uses it. For example, the parameter might be automatically derived from the database, in which case it is helpful to the programmer to be able to see whether or not a null value is likely to be accepted.

This is my understanding of the IsNullable property. I don't actually know of any documentation that "proves" this is actually correct.


Supporting this view would be the implementation of the Oracle Oracle.DataAccess.Client.OracleParameter class, where their docs state:

IsNullable

This property is not supported.

And it is a fact that the value of this property is irrelevant when interfacing with Oracle 10 or 11 or 12, either via the MS driver or the cited Oracle driver.

Behavior on other databases may differ of course.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top