出于单元测试的目的,我想测试我的类映射,而不是在 MongoDB 数据库中读取和写入文档。为了处理循环父/子引用和只读属性等特殊情况,我使用了 BsoncClassMap.RegisterClassMap< MyType>(...)
一些自定义映射覆盖了默认 AutoMap();
生成的映射。
有谁知道如何在不往返数据库的情况下将 BsonDocument 转换为所需的强类型对象?驱动程序在往返数据存储时执行此操作。我的目标是使用 MongoDB C# 驱动程序在内部使用的相同逻辑来测试从 C# 域对象到/从 C# 域对象到 BsonDocument 的序列化。
我可以使用 Bson 扩展方法 ToBsonDocument()
将 C# 对象转换为 BsonDocument?我缺少的部分是该过程的逆过程 - 本质上是 BsonDocument.ToObject< MyType>();
.
最新版本的官方 MongoDB C# 驱动程序可以做到这一点吗?看起来应该是这样 - 我想知道我是不是只是瞎了眼,错过了明显的东西。
最佳答案
MongoDB 驱动程序确实提供了一种从 Bson 反序列化为您的类型的方法。 BsonSerializer
可以在 MongoDB.Bson.dll
中找到, 在 MongoDB.Bson.Serialization
命名空间。
您可以使用 BsonSerializer.Deserialize<T>()
方法。一些示例代码是
var obj = new MyClass { MyVersion = new Version(1,0,0,0) };
var bsonObject = obj.ToBsonDocument();
var myObj = BsonSerializer.Deserialize<MyClass>(bsonObject);
Console.WriteLine(myObj);
在哪里 MyClass
被定义为
public class MyClass
{
public Version MyVersion {get; set;}
}
我希望这会有所帮助。
关于c# - 如何使用官方 MongoDB C# 驱动程序将 BsonDocument 转换为强类型对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24375928/