Eu estou usando ASP.NET Padrão MVC (não Core) modelo no meu projeto, que usa EF6 como ORM. Banco de dados é SQL Server Express.
Aqui está o meu objeto de entidade (ignorando os não-relacionados com propriedades):
public class Asset : AggregateRoot<long>
{
[DataType(DataType.DateTime)]
public DateTime? LastControlTime { get; set; }
}
Quando eu criar um novo Ativo, este campo adequadamente criados como NULL. Assim, tudo funciona como destinado em primeiro lugar. Mas quando eu tento atualizar um objeto com uma simples chamada de serviço, é besteira.
Aqui é o método em que o aplicativo de serviço de classe:
public void ResetLastControlTime (EntityDto<long> input)
{
var asset = Repository.Get(input.Id);
asset.LastControlTime = default(DateTime?);
}
Isso deve redefinir a campo nulo. Eu também tentei asset.LastControlTime = null;
. Mas, no final, está escrito "0001-01-01 00:00:00.0000000" para que o campo no banco de dados. Eu tenho um monte de lugares no código que eu controlo para um valor nulo, então agora eu tinha que mudar de toneladas de arquivos antigos, ou eu preciso encontrar alguma maneira de redefinir a campo para simplesmente NULO.
Eu verifiquei semelhantes perguntas aqui, mas não pode encontrar uma resposta. Todos eles fala sobre anulável DateTime, que eu já tenho. No SQL server esquema de tabela de Tipo de Dados é datetime2(7)
, então eu acho que está correto também. Ah, e a exclusão de um Tipo de anotação também não muda nada.
Então o que estou perdendo aqui? O que devo verificar para encontrar o problema?