在MongoDB中插入/选择之间调整不同数据类型的最佳方法是什么?

时间:2012-08-26 13:56:21

标签: mongodb-.net-driver

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

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

  1. 请参阅以字符串形式返回的Filetimestamp OR
  2. 查看以String反映的单独属性,反映Filetimestamp.toString()。此属性在数据库中没有相应的键;它只是来自BSON的真实键/值的装饰。
  3. 思考#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();  } }
    }
    

1 个答案:

答案 0 :(得分:0)

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