У меня есть два случая, когда мне нужно установить для поля DateTime в Sql значение null. Я использую классы C # и LINQ to SQL. Я прочитал много вопросов о stackoverflow, которые похожи на мой вопрос, но все же я кормлю свой немного другим.
Когда мы добавляем нового клиента.
Соответствующий код:
Customer customer = new Customer();
customer.CustomerName = txt_name.Text;
customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : //send null here;
customer.DOB - это System.DateTime.
Я пробовал:
1)
customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : SqlDateTime.Null;
Но это не удастся, поскольку SqlDateTime не может быть преобразован в System.DateTime.
2)
DateTime? nullDateTime = new DateTime();
customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : nullDateTime.Value
В этом случае сборка завершается успешно, но выдает исключение переполнения SqlDateTime.
Итак, как передать нулевое значение
Свойство члена DOB в LINQ Dataclass
Многие из них предлагают установить для параметра Auto Generated Value значение true, а не вставлять какое-либо значение. Правда, во вставках работает.
Но теперь предположим, что уже существует запись о клиенте, в которой какое-то значение datetime установлено в поле DOB. Теперь пользователь хочет очистить это значение (удалить дату рождения), тогда в этом случае мне нужно передать нулевое значение с помощью UpdateOn, чтобы очистить дату и время, указанную в соответствующей строке клиента.
Заранее большое спасибо :)
null
? - person Jeff Mercado   schedule 16.04.2011Customer.DOB
должно бытьDateTime?
, а неDateTime
, если столбец допускает значение NULL. - person Jon Skeet   schedule 16.04.2011