我想我在这里缺少一个简单的解决方案。当我运行返回 IQueryable 的选择(在 IQueryable 上使用 Linq 样式)时,我可能希望 MyClass 返回与我在插入中使用的格式不同的键/值。
以下面的 UploadFile 类和注释属性 id 和 Filetimestamp 为例。当我设置 Filetimestamp 时,我希望它存储为 DateTime,但是当我检索 IQueryable 时,我想:
- 请参阅作为字符串返回的文件时间戳或
- 请参阅作为反映 Filetimestamp.toString() 的字符串返回的单独属性。该属性在数据库中没有对应的键;它只是来自 BSON 的真实键/值的装饰。
考虑到 #1 不太可能,我通过添加返回 Filetimestamp.toString() 的 get-only 字段 Filetimestamp_str 来追求 #2。当我选择时,行为符合预期。当我插入时,我看到了失败。
我可以创建一个用于获取的装饰器类,所有这些都可以工作 - 但我在这里错过了一些更基本和简单的东西吗?
public class UploadFile : IUploadFile
{
public Object _id { get; set; }
public String Filepath { get; set; }
public String Filename { get; set; }
public String Filetype { get; set; }
public String Fileauthor { get; set; }
public DateTime Filetimestamp { get; set; }
public Object FileID { get; set; }
// these keys are not in DB
public String Filetimestamp_str { get { return Filetimestamp.ToString(); } }
public String _id_str { get { return _id.ToString(); } }
}