2016-09-04 4 views
3

Я вставляю документ в коллекцию MongoDB, используя C# драйвер, один из типов полей и DateTime, когда я отлаживаю приложение, я вижу время сервера в полях «FrameTimeStamp», которые я прохожу в Монго, это мой код:MongoDB C# драйвер и поле DateTime

FrameDocument frameDoc = new FrameDocument(); 
frameDoc.Frame = imageBA; 
frameDoc.EventCodeId = 1; 
frameDoc.SesionId = 1; 
frameDoc.FrameTimeStamp = DateTime.Now; 
frameDoc.ServerUserId = (int)toMongoDt.Rows[0]["ServerUserId"]; 
frameDoc.TraderId = (int)toMongoDt.Rows[0]["TraderId"]; 
frameDoc.ActivePick = (int)toMongoDt.Rows[0]["ActivePick"]; 
frameDoc.TraderName = (string)toMongoDt.Rows[0]["TraderName"]; 
frameDoc.ServerUserName = (string)toMongoDt.Rows[0]["ServerUserName"]; 

var mongoCon = "mongodb://127.0.0.1"; 
MongoClient client = new MongoClient(mongoCon); 
var db = client.GetDatabase("Video"); 

var frameCollection = db.GetCollection<FrameDocument>("Frame"); 
frameCollection.InsertOne(frameDoc); 

в раковине, когда я читаю данные я вижу его в следующем формате: 2016-08-14T06: 10: 33.295Z и время а не время сервера, его UTC, как я могу заставить монго написать DateTime, когда я его передаю?

ответ

5

согласно CSHARP-185

MongoDB хранит все DateTimes в UTC. В любое местное время вы указываете , преобразованный в UTC при сохранении в базе данных. Рекомендуемый подход должен всегда преобразовывать значения DateTime в UTC перед сохранением их в базе данных, таким образом, вы полностью контролируете. Вы также можете сказать C# драйвер, который вы хотите работать в МестноеВремя, как это:

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

 Смежные вопросы

  • Нет связанных вопросов^_^