Ja používam ASP.NET Štandardný MVC (nie Core) šablóny do môjho projektu, ktorý používa EF6 ako ORM. Databáza SQL Server Express.
Tu je môj subjekt, objekt (ignorovanie non-súvisiace vlastnosti):
public class Asset : AggregateRoot<long>
{
[DataType(DataType.DateTime)]
public DateTime? LastControlTime { get; set; }
}
Keď som sa vytvoriť nový Majetok, toto pole vhodne vytvorený ako NULL. Takže, všetko funguje ako intented na prvom mieste. Ale keď sa snažím aktualizovať objekt s jednoduchým služby hovor, to skrutky hore.
Tu je postup pri uplatňovaní služby triedy:
public void ResetLastControlTime (EntityDto<long> input)
{
var asset = Repository.Get(input.Id);
asset.LastControlTime = default(DateTime?);
}
To by malo obnoviť, že pole na hodnotu null. Tiež som sa snažil asset.LastControlTime = null;
. Ale na konci je napísané: "0001-01-01 00:00:00.0000000" do tohto poľa v databáze. Mám veľa miesta v kóde, že som kontrolu na hodnotu null tak teraz som musel meniť ton starých súborov alebo musím nájsť nejaký spôsob, ako obnoviť tejto oblasti jednoducho NULL.
Overil som si podobné otázky tu ale nemôže nájsť odpoveď. Všetky z nich rozpráva o nullable DateTime, ktoré už mám. V SQL server tabuľky, schémy, je Typ Údajov datetime2(7)
tak , myslím, že to je príliš správne. Oh, a ktorým Typ anotácia tiež nechcel nič meniť.
Tak čo mám chýba tu? Čo by som mal skontrolovať nájsť problém?