Je rencontre un problème lors de la vérification des mappages sur une classe très simple.
System.ApplicationExceptionException: pour la propriété 'créée' attendue même élément, mais a eu un élément différent avec la même valeur '8/9/2011 12:07:55 AM 'de type' system.dateTime '. Conseil: utilisez un CustomequalityComparateur lors de la création de la persistancePécissement objet. p> BlockQuote>
J'ai essayé de créer des substitutions pour les égaux et d'obtenir des méthodes de code HashCode et qui a entraîné la même erreur. J'ai creusé dans le comparateur d'égalité personnalisée pour les tests de spécification de persistance et frappez à nouveau la même erreur. Je devrais peut-être jeter un coup d'œil à cela avec un nouveau jeu de yeux le matin mais je me manque quelque chose de très basique. p>
Merci tout. p>
xxx pré> p>
3 Réponses :
Vous devez faire attention lorsque vous comparez des temps de date, car il peut sembler comme si elles sont identiques, mais elles peuvent varier vers les tiques (100 nanosecondes). Il est probablement d'échouer car SQL Server ne stocke pas les temps de la date qui soit avec précision. p>
Vous aurez besoin d'utiliser un comparateur sur mesure sur mesure, de sorte que vous comprenez que l'année, le mois, la journée, l'heure, la minute et la seconde probablement. P>
Regardez également cet article: Pourquoi DateTime ne peut pas comparer? P>
Merci Cole, je ne me suis pas allé au lit la nuit dernière et je viens de regarder cela avec une nouvelle perspective le matin.
Je viens de courir dans ce temps lors de l'utilisation d'une session SQLite en mémoire. J'ai débogué à travers elle et j'ai remarqué que les propriétés «millisecondes» et «types» de DateTimes »diffèrent (« UTC »type contre« non spécifié »).
Ma mise en œuvre par Cole W'S Suggestion: P>
var maxDifference = TimeSpan.FromSeconds(1); ... new PersistenceSpecification<Blah>(Session) ... .CheckProperty(c => c.Created, System.DateTime.Now, new DateTimeEqualityComparer(maxDifference))
Solution simple consiste à créer une nouvelle instance de DateTime
[Test] public void Can_Correctly_Map_Blah() { new PersistenceSpecification<Blah>(Session) .CheckProperty(c => c.Id, 1) .CheckProperty(c => c.Description, "Big Description") .CheckProperty(c => c.Created, new DateTime(2016, 7, 15, 3, 15, 0) ) .VerifyTheMappings(); }