我一直在使用MongoDB C#驱动程序,将一些文档从当前数据库传输到MongoDB,反之亦然。我得到的问题是(简而言之):虽然从MongoDB文档中检索DateTime的方法返回正确的日期/时间,但当分配给我的C#对象的DateTime属性时,它将恢复为01/01/0001 12:00:00 AM,即最小DateTime值。
更多详情:
GetdateTime正在查询MongoDB(rdoc是BSON文档)并返回正确的日期/时间:
Console.WriteLine(GetDateTime(rdoc, "recordedDate"));
输出结果为:
6/3/2010 10:00:00 AM
我将返回的值分配给我的c#对象:
doc.RecordedDate = GetDateTime(rdoc, "recordedDate");
但是当我使用(r是我的c#对象)访问此属性时:
Console.WriteLine(r.UserID + "," + r.DateCreated);
我得到: 123456,1 / 1/0001 12:00:00 AM
我将DateTime字段设置为:
set{ recordedDate = value.ToLocalTime(); }
这里只是提到我在创建c#docs时实际上并没有更新我们的数据库,只是将这些文档保存到内存中然后将它们重新保存到Mongo(不要问),仅用于测试目的。它不应该影响我遇到的问题,所有其他领域都可以正常工作。
我知道BSON和.NET的DateTime对象之间存在一些不匹配(BSON会截断Ticks或其他东西的数量),但如果这导致了我的问题,请不要...
顺便说一句,我三天前才开始使用c#,所以如果我遗漏了一些基本而明显的东西,请轻轻指出:)。
答案 0 :(得分:0)
您的数据存储方式似乎不匹配。
这是更新属性doc.RecordedDate
:
doc.RecordedDate = GetDateTime(rdoc, "recordedDate");
但是你正在阅读财产DateCreated
:
Console.WriteLine(r.UserID + "," + r.DateCreated)
这是写第三个变量'recordedDate':
set{ recordedDate = value.ToLocalTime(); }
你正在写一个名为RecordedDate的东西,但是从一个名为DateCreated的东西中读取。你在哪里实际更新DateCreated? doc.RecordedDate和r.DateCreated之间有什么关系? recordedDate和doc.RecordedDate或r.DateCreated之间的关系是什么?