2017-08-14 150 views
0

我在其中一個應用程序中使用MongoDB和c#驅動程序。 我已經定義了一個實體,並且還定義了強制執行模式的類映射。MongDb C#驅動程序將列表成員的空值反序列化爲空

public class TestEntity 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public List<SomeModel> Properties { get; set; } 
} 

此外,我已經定義了約定來禁用空或空數組/列表的序列化。

new ConventionPack { new IgnoreIfNullConvention(true) 
conventionPack.Add(new IgnoreEmptyArraysConvention()); 

一切正常,但是當我查詢文檔背面使用C#驅動像下面,我得到的屬性爲空列表而不是空。例如,如果我有一個testentity文檔如下,當我使用c#驅動程序查詢「屬性」屬性返回爲空列表而不是null。

{ 「_id」:物件( 「5991be3475f14655406cd301」), 「名」: 「測試」, 「說明」: 「測試」 }

當我搜索我找不到答案線上。希望有人能幫忙。謝謝

+0

什麼是您使用的IgnoreEmptyArraysConvention會議? –

+0

在這裏提到的那個。 https://jira.mongodb.org/browse/CSHARP-765 –

回答

0

刪除約會IgnoreEmptyArraysConvention看看代碼here它似乎它創建一個新的列表實例。

+0

是的,它是。我沒有太注意它,假設它只會影響序列化,而不是反序列化。我猜想複製代碼的副作用之一。不管怎麼說,還是要謝謝你 ! –

+0

我們之前都做過 –