Je suis tombé sur une situation où il serait préférable de représenter une partie particulière de mon modèle de domaine comme relationnel. J'ai lu la section sur database references dans MongoDB et je comprends que vous pouvez fournir des références à plusieurs documents en fournissant un tableau JSON de références $ ref à divers documents dans une collection étrangère.Référence à plusieurs documents étrangers avec MongoDBRef dans MongoDB
Tous les exemples que j'ai vu pour ajouter une référence à un document étranger dans le code ont été seulement pour un seul document et ils ont créé une propriété publique de type MongoDBRef. À mon avis, il y a beaucoup de frais généraux inutiles à cette approche, mais cela ne précise pas non plus ce qu'il faut faire pour conserver des références à plusieurs documents.
Si vous souhaitez fournir une relation un-à-plusieurs entre des documents étrangers dans Mongo, est-il nécessaire de fournir une propriété de collection contenant des objets MongoDBRef? Est-il possible de coller à une collection d'objets entité standard dans mon code C# et le mapper aux documents Mongo en utilisant BsonClassMap?
Voici une classe simple qui représente le modèle que j'ai actuellement. Il semble enregistrer le document et les références correctement, mais je n'aime pas exposer une collection publique d'objets MongoDBRef et la surcharge nécessaire pour ajouter de nouveaux documents pour quiconque utilise la classe Person.
Si cela compte, j'utilise MongoDB 2.0 et leur pilote C#. DBRefs ne sont pas l'outil approprié pour stocker des références à un type de document connu.
// This is how my class currently looks
public class Person
{
public string Name { get; set; }
public List<MongoDBRef> Vehicles { get; private set; }
public Person()
{
Vehicles = new List<MongoDBRef>();
}
}
// This is what I want my class to look like
public class Person
{
public string Name { get; set; }
public List<Vehicle> Vehicles { get; private set; }
public Person()
{
Vehicles = new List<Vehicle>();
}
}
Merci pour la réponse. Quand vous dites que les équivalents C# me permettent de faire ce que je veux, y a-t-il un nom pour cette fonctionnalité? J'ai lu les documents sur le pilote C#, mais je ne vois rien à ce sujet, alors j'espère que je suis juste en train de négliger quelque chose. – senfo
Ce n'est généralement pas une fonction de pilote et franchement je ne suis pas à la hauteur sur C3. Il semble que c'est un peu confus avec un couple de pilotes différents, certains avec le soutien de LINQ d'autres pas tellement. Si vous êtes bloqué sur C#, vous devrez peut-être le faire manuellement ou chercher des premiers efforts sur github ou google code. –
Pourquoi DBRefs n'est pas approprié lorsque le type de document est connu? –