Používám ASP.NET Často používaný MVC (ne Jádro) šablony v mém projektu, který používá EF6 jako ORM. Databáze SQL Server Express.
Tady je můj subjekt, objekt (ignoruje non-související vlastnosti):
public class Asset : AggregateRoot<long>
{
[DataType(DataType.DateTime)]
public DateTime? LastControlTime { get; set; }
}
Když jsem se vytvořit novou Aktiv, toto pole vhodně vytvořen jako NULL. Tak, vše funguje tak, jak zaměřeno na prvním místě. Ale když jsem se pokusí aktualizovat objekt s jednoduchým služby volání, to podělá.
Zde je metoda v aplikaci service třída:
public void ResetLastControlTime (EntityDto<long> input)
{
var asset = Repository.Get(input.Id);
asset.LastControlTime = default(DateTime?);
}
To by mělo obnovit, že pole na hodnotu null. Také jsem se snažil asset.LastControlTime = null;
. Ale na konci je napsáno "0001-01-01 00:00:00.0000000" do tohoto pole v databázi. Mám spoustu místa v kódu, který jsem kontrolu na null hodnotu, takže teď jsem musel změnit tun starých souborů, nebo musím najít nějaký způsob, jak obnovit to pole prostě NULL.
Ověřil jsem si podobné otázky, ale nemůže najít odpověď. Všechny z nich vypráví o možnou hodnotou null DateTime, které už mám. V SQL server tabulka, schéma, Datový Typ je datetime2(7)
, takže si myslím, že je správné. Jo a odstraněním datový Typ anotace se také nic nemění.
Tak co mi tu chybí? Co mám zkontrolovat, aby najít problém?