У меня есть два случая, когда мне нужно установить поле 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 is 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, чтобы очистить дату и время, указанную в соответствующей строке клиента.
Заранее большое спасибо :)