Je suis nouveau sur MongoDB et je me posais des questions sur les objets de domaine avec des BsonClassMaps enregistrés. Considérez les mappings suivants:C# MongoDB Query avec BsonClassMaps
BsonClassMap.RegisterClassMap<VoyageNumber>(cm =>
{ cm.MapField<string>(p => p.Id); });
BsonClassMap.RegisterClassMap<Schedule>(cm =>
{ cm.MapField<DateTime>(p => p.EndDate); cm.MapField<DateTime>(p => p.StartDate); });
BsonClassMap.RegisterClassMap<Voyage>(cm =>
{ cm.MapIdField<VoyageNumber>(p => p.VoyageNumber); cm.MapField<Schedule>(p => p.Schedule); });
L'entité de domaine est "Voyage". Dans cet exemple simple, il s'agit d'un type complexe "Schedule" (avec date de début et date de fin) et un VoyageNumber (avec un champ id de chaîne). "VoyageNumber" est l'identifiant de l'entité.
Maintenant, je peux insérer un nouveau voyage très bien avec:
MongoCollection<Voyage> mongoVoyages = context.MyDB.GetCollection<Voyage>("Voyages");
mongoVoyages.Insert<Voyage>(voyage);
je peux récupérer un voyage via:
MongoCollection mongoVoyages = context.MyDB.GetCollection("Voyages");
BsonDocument result = mongoVoyages.FindOneAs<BsonDocument>();
BsonDocument sched = result["Schedule"].AsBsonDocument;
DateTime start = sched["StartDate"].AsDateTime;
//etc...
Je voudrais maintenant Bien sûr, comme à la recherche d'un voyage par Id. Comment puis-je y parvenir avec les mappages présentés ci-dessus? J'ai essayé quelque chose comme ceci et ai échoué:
Query.EQ("VoyageNumber", someStringID)
J'utilise le pilote C# officiel 1.0.
Merci, qui travaille et fait avancer ma compréhension du document orienté BDs. Donc vous dites que je n'ai pas besoin de mapper d'autres champs à l'exception de l'IdField? – hoetz
@Malkier: Non, vous n'avez pas besoin de carte du tout. Au moins dans votre exemple. J'ai ajouté quelques notes de la documentation à ma question. –