出于单元测试的目的,我'd like to test my class mappings without reading and writing documents into the MongoDB database. To handle special cases such as circular parent / child references and read only properties, I'使用了 BsoncClassMap.RegisterClassMap< MyType>(...)
,其中一些自定义映射覆盖了默认的 AutoMap();
生成的映射 .
有没有人知道如何将BsonDocument转换为所需的强类型对象而不进行数据库往返?当进出数据存储时,驱动程序正在执行此操作 . 我的目标是使用MongoDB C#驱动程序在内部使用的相同逻辑来测试与C#域对象之间的序列化到BsonDocument .
我能够使用Bson扩展方法 ToBsonDocument()
将C#对象转换为BsonDocument吗?我缺乏的那一块是与过程相反的 - 基本上是 BsonDocument.ToObject< MyType>();
.
这是官方MongoDB C#驱动程序的最新版本吗?它似乎应该是 - 我想知道我是否只是盲目而且错过了显而易见的事实 .
4 回答
MongoDB驱动程序确实提供了一种从Bson反序列化到您的类型的方法 .
BsonSerializer
可以在MongoDB.Bson.Serialization
,MongoDB.Bson.Serialization
命名空间中找到 .您可以使用
BsonSerializer.Deserialize<T>()
方法 . 一些示例代码将是其中
MyClass
定义为我希望这有帮助 .
如果您需要对象的一部分,例如:您有实体教师:
和实体课程:
而你只需要“教师”实体的“课程”,你可以使用:
现在,您有一个来自taecher的课程列表,并将BsonDocument答案转换为“IEnumerable” .
如果要将从mongoDB获取的行映射到代码中的类,请直接进行如下操作
使用
yield
关键字可以根据需要返回数据 .