Tôi đang làm việc với cơ sở dữ liệu MongoDB. Tôi biết khi bạn chèn một DateTime vào Mongo, nó chuyển đổi nó thành UTC. Nhưng tôi đang làm một bài kiểm tra đơn vị, và Assert của tôi không thành công.Ngày giờ ToLocalTime không
[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
}
Tôi phải thiếu điều gì đó hiển nhiên. Khi tôi nhìn vào trình gỡ lỗi, tôi có thể thấy rằng trận đấu của datetime, nhưng khẳng định vẫn nói họ không (nhưng họ làm):
Result Message: Assert.AreEqual failed. Expected:<5/21/2015 8:27:04 PM>. Actual:<5/21/2015 8:27:04 PM>.
Bất kỳ ý tưởng những gì tôi đang làm sai ở đây?
EDIT:
tôi đã đi lên với hai giải pháp khả thi, cả hai đều yêu cầu tôi phải nhớ để làm một cái gì đó (mà không phải lúc nào cũng là điều tốt nhất để dựa vào ...):
một là sử dụng một phương pháp mở rộng để cắt bất kỳ DateTime ra khỏi cơ sở dữ liệu:
public static DateTime Truncate(this DateTime dateTime) {
var timeSpan = TimeSpan.FromMilliseconds(1);
var ticks = -(dateTime.Ticks % timeSpan.Ticks);
return dateTime.AddTicks(ticks);
}
các khác, sau khi đọc http://alexmg.com/datetime-precision-with-mongodb-and-the-c-driver/, là để gắn thẻ bất kỳ DateTime trong lớp POCO:
public class Car : IEntity {
public Guid Id { get; set; }
[BsonDateTimeOptions(Representation = BsonType.Document)]
public DateTime LastTimestamp { get; set; }
}
Xem bài viết này giải thích MongoDB datetime chính xác: http: // alexmg.com/datetime-precision-với-mongodb-and-the-c-driver/ –