Я работаю с базой данных MongoDB. Я знаю, когда вы вставляете DateTime в Mongo, он преобразует его в UTC. Но я делаю единичный тест, и мой Assert не работает.DateTime ToLocalTime сбой
[TestMethod]
public void MongoDateConversion() {
DateTime beforeInsert = DateTime.Now;
DateTime afterInsert;
Car entity = new Car {
Name = "Putt putt",
LastTimestamp = beforeInsert
};
// insert 'entity'
// update 'entity' from the database
afterInsert = entity.LastTimestamp.ToLocalTime();
Assert.AreEqual(beforeInsert, afterInsert); // fails here
}
У меня должно быть что-то недостающее. Когда я смотрю в отладчике, я могу видеть, что матч в DATETIME в, но по-прежнему утверждают, говорит, что они не делают (но они делают):
Result Message: Assert.AreEqual failed. Expected:<5/21/2015 8:27:04 PM>. Actual:<5/21/2015 8:27:04 PM>.
Любые идеи, что я делаю неправильно здесь?
EDIT:
Я придумал два возможных решения, оба из которых требуют, чтобы я помню, что-то делать (что не всегда лучше всего полагаться на ...):
Одним из них является использование метода расширения для усечения любой DateTime, выходящей из базы данных:
public static DateTime Truncate(this DateTime dateTime) {
var timeSpan = TimeSpan.FromMilliseconds(1);
var ticks = -(dateTime.Ticks % timeSpan.Ticks);
return dateTime.AddTicks(ticks);
}
другого, после прочтения http://alexmg.com/datetime-precision-with-mongodb-and-the-c-driver/, чтобы пометить любой DateTime в классе POCO:
public class Car : IEntity {
public Guid Id { get; set; }
[BsonDateTimeOptions(Representation = BsonType.Document)]
public DateTime LastTimestamp { get; set; }
}
Смотрите эту статью, объясняющую MongoDB DATETIME точность: HTTP: // alexmg.com/datetime-precision-with-mongodb-and-the-c-driver/ –