Я заметил странную проблему в фрагменте кода, где нерегламентированный SQL-запрос не давал ожидаемого результата, хотя его параметры совпадали с записями в источнике данных. Я решил ввести в ближайшее окно следующее тестовое выражение:
new SqlParameter("Test", 0).Value
Это дало результат null
, что заставило меня почесать голову. Кажется, что конструктор SqlParameter
обрабатывает нули как пустые значения. Следующий код дает правильный результат:
SqlParameter testParam = new SqlParameter();
testParam.ParameterName = "Test";
testParam.Value = 0;
// subsequent inspection shows that the Value property is still 0
Кто-нибудь может объяснить такое поведение? Это как-то преднамеренно? Если так, то это потенциально довольно опасно...