Comment convertir un BsonDocument en un objet fortement typé avec le pilote MongoDB C # officiel?
Pour l'unité des fins de test, je voudrais tester ma classe mappages sans la lecture et de l'écriture des documents dans la base de données MongoDB. De gérer des cas particuliers tels que la circulaire parent /enfant, les références et les propriétés en lecture seulement, j'ai utilisé BsoncClassMap.RegisterClassMap< MyType>(...)
avec quelques personnalisé mappages de substitution de la valeur par défaut AutoMap();
généré des mappages.
Personne ne sait comment faire pour convertir un BsonDocument souhaité fortement typé objet sans faire un aller-retour à la base de données? Le pilote est en train de faire cela dans le magasin de données. Mon but serait d'utiliser la même logique que la MongoDB C# pilote est l'utilisation en interne pour tester la sérialisation vers /à partir d'un C# objet de domaine dans un BsonDocument.
Je suis en mesure d'utiliser le Bfils méthode d'extension ToBsonDocument()
pour convertir un objet de C# dans un BsonDocument? La pièce que je suis en manque, c'est l'inverse du processus, qui est essentiellement un BsonDocument.ToObject< MyType>();
.
Est-ce possible avec la dernière version officielle de la MongoDB C# pilote? Il semble que ce devrait être - je me demande si je suis juste aveugle et suis absent de l'évidence.
source d'informationauteur user3769062
Vous devez vous connecter pour publier un commentaire.
MongoDB Pilote fournit une méthode pour la désérialisation de Bfils à votre type. Le
BsonSerializer
peut être trouvé dansMongoDB.Bson.dll
dans leMongoDB.Bson.Serialization
espace de noms.Vous pouvez utiliser le
BsonSerializer.Deserialize<T>()
méthode. Un exemple de code seraitOù
MyClass
est défini commeJ'espère que cette aide.
Dans le cas où vous avez besoin d'une partie de l'objet, par exemple:
Vous avez entité Enseignant:
Et de l'entité de Cours:
Et vous avez seulement besoin de "Cours" de "le Professeur" de l'entité, vous pouvez utiliser:
Maintenant, vous avez une liste des cours de taecher et convertir BsonDocument réponse dans "IEnumerable".
Directement si vous souhaitez mapper lignes extraites de mongoDB à une classe au sein de votre code comme ci-dessous
Utilisation
yield
mot-clé pour renvoyer des données que vous le souhaitez.