Не совсем понятно, что вы имеете в виду. Если вы пытаетесь передать нулевое значение в параметре SQL, вы должны использовать DBNull.Value
в качестве значения для SqlParameter
(или любого типа, который вы используете) , Если вы хотите представить в C # целое число, которое можно обнулять, используйте int?
(или Nullable<int>
- это одно и то же).
Нельзя хранить нулевое значение в обычной переменной типа, не допускающей значения NULL. Типы значений Nullable по-прежнему являются структурами, но они оборачивают ненулевой тип и добавляют логическое значение, чтобы указать, является ли оно «реальным» значением или нулевым. C # добавляет синтаксический сахар вокруг него, позволяя использовать литерал null
для присваиваний, различных преобразований, поднятых операторов и т. Д .:
int? value = 5;
value = null;
if (value == null)
{
...
}
Если это не поможет, пожалуйста, дайте нам больше информации о том, что именно вы пытаетесь сделать.
РЕДАКТИРОВАТЬ: Хорошо, похоже, StockBO.Client_id
должен иметь тип short?
- но тогда это не позволит напрямую установить DBNull.Value
. Вы должны использовать null
, чтобы установить идентификатор клиента в нулевое значение. Всякий раз, когда вы переводите между объектами и параметрами и результатами SQL, вам нужно будет самостоятельно выполнить такое преобразование - если вы обнаружите, что делаете это регулярно, разработайте несколько вспомогательных методов, чтобы вам было легче.
Конечно, если вы начнете использовать LINQ to SQL или что-то в этом роде, вам не нужно беспокоиться о DBNull.Value
- поставщики LINQ, как правило, напрямую поддерживают типы значений NULL.