Używam ASP.NET Stereotypowy wzorzec MVC (nie głównym) w moim projekcie, który wykorzystuje EF6 jako ORM. Baza danych SQL Server Express.
Oto mój obiekt encji (pomijając niepowiązanych właściwości):
public class Asset : AggregateRoot<long>
{
[DataType(DataType.DateTime)]
public DateTime? LastControlTime { get; set; }
}
Gdy tworzę nowy zasób, to pole jest tworzony jako PUSTE. Tak więc, najpierw wszystko działa tak jak powinno. Ale gdy próbuję zaktualizować obiekt prostym wywołaniem usługi, to się psuje.
Oto metoda w klasie usługi aplikacji:
public void ResetLastControlTime (EntityDto<long> input)
{
var asset = Repository.Get(input.Id);
asset.LastControlTime = default(DateTime?);
}
To powinno zresetować wartość tego pola do zera. Ja też próbowałem asset.LastControlTime = null;
. Ale w końcu w tym polu bazy danych jest napisane "0001-01-01 00:00:00.0000000". Mam wiele miejsc w kodzie, które kontroluję do wartości zerowej, więc teraz musiałem zmienić mnóstwo starych plików, lub muszę znaleźć jakiś sposób, aby przywrócić to pole tylko do ZERA.
Sprawdziłem podobne pytania tutaj, ale nie mogę znaleźć odpowiedzi. Wszystkie one opowiadają o zerowym czasu daty, które już mam. W schemacie tabeli programu SQL server Typ danych jest datetime2(7)
tak , że myślę, że to też jest poprawnie. O, i usuwanie adnotacji typu danych również nic się nie zmieniło.
Czego mi tu brakuje? Co powinienem sprawdzić, żeby znaleźć problem?