2016-04-30 4 views
0

Ich arbeite mit MongoDB, und fand seltsames Verhalten (zumindest für mich). Ich habe Zeitunterschied beim Einfügen von C# und erhalte es aus MongoDB.Andere Zeitstempel-Abruf von Mongodb nach dem Einfügen von C#

Meine Einheit:

[BsonId] 
public ObjectId Id { get; set; } 
public bool IsActive { get; set; } 
public string CreatedBy { get; set; } 
public DateTime CreatedTime { get; set; } 
public string Name { get; set; } 

Timestamp wurde unter Code eingefügt werden:

public bool Insert(AccountCategories _input) 
{ 
    _input = new AccountCategories(); 
    _input.CreatedBy = "super-admin"; 
    _input.CreatedTime = DateTime.Now; 
    _input.Id = new ObjectId(); 
    _input.IsActive = true; 
    _input.Name = "test-name"; 

    var _result = _repo.Insert(_input); 

    return _result; 
} 
  • Eingefügt Daten: {4/30/16 21.04.36}
  • Retrieval Daten: {4/30/16 2:04:36 PM}

Ich habe versucht, die Entitäten zu ändern, indem Sie Bson-Attribut hinzufügen, aber es funktionierte nicht:

[BsonRepresentation(BsonType.Document)] 
public DateTime CreatedTime { get; set; } 

Warum dieses Verhalten passiert ist? und wie kann ich das beheben?

Antwort

0

Ich habe die Antwort gefunden, nachdem ich mein Keyword während der Suche auf dieser Website und Google geändert habe.

Nach MongoDB Handbuch: https://docs.mongodb.org/manual/tutorial/model-time-data/

Zeit UTC vorbelegt ist, das ist, warum ich habe 7 Stunden Unterschied (mein schlechten nicht in das Handbuch zuerst hinschauen) So konnte ich mein Problem beheben, indem BsonAttribute Hinzufügen wie unten an der Datumzeit:

[BsonDateTimeOptions(Kind=DateTimeKind.Local)] 
public DateTime CreatedTime { get; set; } 

Quelle: Dealing with how MongoDB stores DateTime when used with Service Locator Pattern