Я использую ASP.NET Шаблонный шаблон MVC (не основной) в моем проекте, который использует EF6 в качестве ORM. База данных-это SQL Server Express.
Вот мой объект сущности (игнорируя несвязанные свойства):
public class Asset : AggregateRoot<long>
{
[DataType(DataType.DateTime)]
public DateTime? LastControlTime { get; set; }
}
Когда я создаю новый ресурс, это поле создается как ПУСТОЕ. Итак, сначала все работает так, как задумывалось. Но когда я пытаюсь обновить объект простым вызовом службы, он портится.
Вот метод в классе службы приложений:
public void ResetLastControlTime (EntityDto<long> input)
{
var asset = Repository.Get(input.Id);
asset.LastControlTime = default(DateTime?);
}
Это должно сбросить значение этого поля до нуля. Я тоже пытался asset.LastControlTime = null;
. Но в конце концов в этом поле базы данных написано "0001-01-01 00:00:00.0000000". У меня есть много мест в коде, которые я контролирую для нулевого значения, поэтому теперь мне пришлось изменить тонны старых файлов, или я должен найти какой-то способ сбросить это поле просто до НУЛЯ.
Я проверил аналогичные вопросы здесь, но не могу найти ответа. Все они рассказывают о нулевом времени даты, которое у меня уже есть. В схеме таблицы SQL server Тип данных является datetime2(7)
, так что, я думаю, это тоже правильно. О, и удаление аннотации типа данных также ничего не изменило.
Так чего же мне здесь не хватает? Что я должен проверить, чтобы найти проблему?