1

我想我在这里缺少一个简单的解决方案。当我运行返回 IQueryable 的选择(在 IQueryable 上使用 Linq 样式)时,我可能希望 MyClass 返回与我在插入中使用的格式不同的键/值。

以下面的 UploadFile 类和注释属性 id 和 Filetimestamp 为例。当我设置 Filetimestamp 时,我希望它存储为 DateTime,但是当我检索 IQueryable 时,我想:

  1. 请参阅作为字符串返回的文件时间戳或
  2. 请参阅作为反映 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();  } }
}
4

1 回答 1

0

您可以创建一个 BsonClassMap,指定哪些属性应该(不)被序列化。请参阅序列化教程。但是,根据该教程,不应自动映射只读属性,因此我不应该期望插入错误。

于 2012-09-08T20:29:32.653 回答