Я не очень много работал с параметрами в ADO.Net. Я пишу собственный поставщик данных .Net (по образцу SqlClient), и мне нужно реализовать свойство IsNullable в моем классе параметров, который наследуется от DbParameter. Мой поставщик данных не будет поддерживать хранимые процедуры, поэтому я буду поддерживать только входные параметры (стиль подстановки).
Документы MSDN довольно неясны в отношении функциональности IsNullable, заявляя: «Получает или задает значение, указывающее, принимает ли параметр нулевые значения». Поиск в Google показывает, что многие люди сбиты с толку тем, что делает IsNullable, говоря, что установка IsNullable в false не запрещает им использовать параметр, который будет иметь нулевое значение, как они и ожидали.
Исходя из этого, я думаю, что, возможно, свойство IsNullable относится к использованию с хранимой процедурой, а также к тому, может ли параметр хранимой процедуры быть нулевым, а не может ли значение параметра быть нулевым.
В этом случае, поскольку у меня не будет хранимых процедур, моя реализация может быть такой:
public override bool IsNullable { get { return false; } set {} }
Чтобы не возиться с тестовым кодом, чтобы увидеть, как работает реализация IsNullable в SqlParameter, я был бы признателен, если бы кто-нибудь, имеющий опыт написания кода с использованием параметров, мог бы объяснить IsNullable.