Hallo,
ich bin auf was kurioses gestoßen.
Gegeben ist eine Entity mit einer DateTime property.
Diese Entity speichere ich in über NHibernate in eine DB und lade sie direkt wieder.
Es liegt nicht an einer Rundung der Millisekunden, die sind immer ==0
entity1.ID = 1;
entity1.createdDate = DateTime.Date();
repo.save(entity1);
/* hier wird eine neue Session genutzt um eventuelle Caches zu umgehen */
entity2 = repo.load(entity1.ID);
/* hier nun Bedingungen die ich beobachtet habe */
entity1.createdDate != entity2.createdDate
entity1.createdDate.ToOADate == entity2.createdDate.ToOADate
entity1.createdDate.ToString == entity2.createdDate.ToString
entity1.createdDate.Equals(entity2.createdDate) == false
entity1.createdDate.Miliseconds == 0
entity2.createdDate.Miliseconds == 0
wie kann es sein, das der direkte Vergleich oder die Prüfung mit Equals eine Ungleichheit feststellt, wenn doch die anderen Methoden die Gleichheit belegen?
I am confused.
alex.
Keyboard not found Error. Press F1 to continue. 👶
Equals vergleicht auf die Ticks, und diese sind anscheinend unterschiedlich.
Hoi alex.enjoy
Schreib dir eine Extensionmethod für die Tests, die nur Jahr, Monat und Tag vergleicht, oder zusätzlich noch die Zeit ohne Ticks, bzw. ohne Sekunden. Je nach em wie du es brauchst.
Ich hatte das gleiche Problem auch schon 😃
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011