我正在使用MongoDB,并发现了奇怪的行为(至少对我而言)。从C#插入并从MongoDB中检索时,我有时间差异。
我的实体:
[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; }
使用以下代码插入时间戳:
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;
}
我尝试通过添加Bson属性来修改实体,但它无法正常工作:
[BsonRepresentation(BsonType.Document)]
public DateTime CreatedTime { get; set; }
为什么会出现这种情况?我该如何解决这个问题?
答案 0 :(得分:0)
我在搜索此网站和谷歌时更改了我的关键字后找到了答案。
根据MongoDB手册: https://docs.mongodb.org/manual/tutorial/model-time-data/
时间默认为UTC,这就是为什么我有7个小时的差异(我不好先不看手册) 所以我设法通过将BsonAttribute添加到Datetime来解决我的问题,如下所示:
[BsonDateTimeOptions(Kind=DateTimeKind.Local)]
public DateTime CreatedTime { get; set; }
来源:Dealing with how MongoDB stores DateTime when used with Service Locator Pattern