2013-02-22 59 views
0

我有一个继承(b)列表的类(a)。Mongo C#继承列表

public class a : List<b> 
{ 

} 

现在,当我尝试将此类的对象保存到Mongo时,我得到一个错误。

串行EnumerableSerializer <b>预期的 类型ArraySerializationOptions,不DocumentSerializationOptions序列化选项。

你有没有遇到过这样的事情,如果有人可以摆脱一些将是伟大的光。我无法在文档或网上找到关于此的更多信息。

回答

1

保存到MongoDB的顶级文档不能是一个列表,它必须是一个类。它也必须有一个Id字段。所以你可以这样做:

public class C 
{ 
    public ObjectId Id { get; set; } 
    public A List { get; set; } 
} 

public class A : List<B> 
{ 
} 

如果你已经在文档(在这种情况下,类型C)封装类型A的列表。

但是,如果您决定保留A类的类,请小心。如果您将自定义属性添加到类A中,则必须编写自定义序列化程序,以确保您添加的自定义值与正确序列化一起列表值。参见:

https://jira.mongodb.org/browse/CSHARP-460