我想我在这里错过了一个简单的解决方案。当我运行一个返回IQueryable的select(在IQueryable上使用Linq样式)时,我可能希望MyClass返回与我在插入中使用的格式不同的键/值。
以下面的UploadFile类为例,注意属性id和Filetimestamp。当我设置Filetimestamp时,我希望它存储为DateTime,但是当我回溯IQueryable时,我想:
思考#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(); } }
}
答案 0 :(得分:0)
您可以创建一个BsonClassMap,指定应该(不)序列化哪些属性。请参阅Serialization Tutorial。但是,根据该教程,不应自动执行只读属性,因此我不应该期望插入错误。