Eu sunt, folosind ASP.NET Sabloane MVC (nu Core) șablon în proiectul meu, care utilizează EF6 ca ORM. Baza de date este SQL Server Express.
Aici mi-e entitate obiect (ignorarea non-legate de proprietăți):
public class Asset : AggregateRoot<long>
{
[DataType(DataType.DateTime)]
public DateTime? LastControlTime { get; set; }
}
Când am crea un Activ nou, acest domeniu în mod corespunzător creat ca NULL. Deci, totul funcționează ca finalitate la început. Dar când am încerca să actualizeze un obiect cu un simplu apel de service, aceasta șuruburi.
Aici este metoda în aplicare clasa de serviciu:
public void ResetLastControlTime (EntityDto<long> input)
{
var asset = Repository.Get(input.Id);
asset.LastControlTime = default(DateTime?);
}
Acest lucru ar trebui să reseta acest domeniu la null. Am încercat, de asemenea, asset.LastControlTime = null;
. Dar în cele din urmă a scris "0001-01-01 00:00:00.0000000" de câmp în baza de date. Am o mulțime de locuri în codul de control pentru o valoare nulă, deci acum am avut de a schimba tone de fișiere vechi sau trebuie să găsesc o modalitate de a reseta acel câmp să pur și simplu NULĂ.
Am verificat întrebări similare aici, dar nu pot găsi un răspuns. Toate acestea spune despre null DateTime, pe care o am deja. În SQL server schema de masă, Tip de Date este datetime2(7)
, deci cred că e corectă. Oh, și ștergerea de Date de adnotare, de asemenea, nu se schimba nimic.
Deci ce am pierdut pe aici? Ce ar trebui să verificați pentru a găsi problema?