MongoDB C#驱动程序保存空属性

时间:2015-04-09 12:54:51

标签: c# json mongodb

我有一个C#对象,有大约500个属性,其中一些是复杂类型。 Json文档是通过XML导入的,它可以100%运行。我也可以查询集合并成功将Json文档序列化为C#对象。问题是,当我对对象进行更改并使用collection.Save(object);它为所有C#属性创建了Json属性,即使它们是NULL,所以现在我的文档看起来像这样:

    { 
    "_id" : "AA00001", 
    "Product" : {
        "Reference" : "AA00001", 
        "Type" : "02", 
        "Code" : null, 
        "Property 1" : null, 
        "Property 2" : null, 
        "Property 3" : null, 
    .
    .
    .   
}

在C#save

之前,原始文档看起来像这样
{ 
"_id" : "AA00001", 
"Product" : {
    "Reference" : "AA00001", 
    "Type" : "02"
.
.
.   

有没有办法告诉司机不要保存空/空值?

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以通过注册ConventionPack来执行此操作:

var pack = new ConventionPack();
pack.Add(new IgnoreIfNullConvention(true));
ConventionRegistry.Register("ignore nulls",
                            pack,
                            t => true);

IgnoreIfNull将阻止字段序列化。还有一个IgnoreIfDefaultConvention,它也适用于值类型。

有关如何注册这些内容的详细信息,您可能需要在此处参考another question