У меня есть база данных SQL Server, в одной из моих таблиц LatestData
есть столбец, который не может содержать nullable DATETIME
со значением по умолчанию 01/01/1970
.См. Код под точным кодом T-SQL для этого столбца.
[MyDateTime] DATETIME DEFAULT (CONVERT([DATETIME], CONVERT([DATE], '1970/01/01 00:00AM', (0)), (0))) NOT NULL
Когда эта таблица добавляется в код нашего сервера (C #) через модель данных .EDMX
, поле выглядит следующим образом:
public System.DateTime MyDateTime { get; set; }
Я добавляю новые данные вэта таблица через C #, но на момент добавления строки мой столбец MyDateTime
не содержит никаких данных.
Поскольку столбец равен Not Null
, мое поле MyDateTime
автоматически устанавливается на 01/01/0001
.
При попытке добавить эту дату в мой столбец DateTime
выдается следующая ошибка:
System.Data.SqlClient.SqlException: преобразование типа данных datetime2 в данные datetimeТип привел к значению вне допустимого диапазона.
После некоторых исследований я обнаружил, что C # Datetime MinDate - 01/01/0001, тогда как SQL Server DATETIME
- 01/01/ 1753, и это вызывает ошибку.
Код C # передает «пустое» поле как 01/01/0001
в базу данных, которая затем пытается преобразовать его.Это, очевидно, неудачно.
Есть ли способ для базы данных узнать, чтобы вернуться к значению по умолчанию, вместо того, чтобы пытаться сначала преобразовать DATETIME
, или сделать это в случае сбоя преобразования?
Я знаю, что мог бы установить для столбца в Datatable значение DateTime2 или указать дату для этого столбца перед добавлением его через C #, но это не лучший способ сделать это?
Заранее спасибо за любую помощь.