3

我有一个复杂的模型,我想坚持到 Mongo DB。这个模型有一些我不想打破的循环引用。

显然我不能用官方的 Mongo C# 驱动程序来做到这一点。Json.Net 可以在 Bson 中正确序列化,并且可以毫无问题地处理我的模型。

我可以更改 mongo 驱动程序序列化程序吗?或者您有任何其他建议来处理这种情况(除了避免循环引用或忽略属性)?

谢谢你。

4

2 回答 2

3

定制的序列化/反序列化是一个很好的解决方案,但它不一定是痛苦的。最简单的方法可能是让您的模型使用 ISupportInitialize 接口,并实现 BeginInit() 和 EndInit() 方法。

Sergio Costa 有一个很好的例子,它使用这个接口来处理名为Serializing circular references in MongoDb的网页上的循环引用。

于 2014-02-24T17:26:33.433 回答
2

如果您无法断开连接,则可以使用多种选项进行自定义序列化。

我将从这里开始:http: //docs.mongodb.org/ecosystem/tutorial/serialize-documents-with-the-csharp-driver/

特别是标题为“编写自定义序列化程序”的部分。您需要确定潜在的额外复杂性是否值得。

或者,您可以考虑将对象转换为 json,然后再转换为 BsonDocument。

BsonDocument document = BsonDocument.Parse(json);

如果您确实需要这个,请注意您正在使用 Object->JSON->BsonDocument->Bson 路径进行相当多的繁忙工作。如果您需要高吞吐量或担心 CPU/内存利用率,则需要考虑这一点。

于 2013-09-06T18:14:11.617 回答