Je viens juste de commencer à jouer avec MongoDB (C#) et j'ai essayé de transférer un dépôt depuis le framework d'entité. J'utilise le pilote C# officiel 1.0. Maintenant, je l'ai fait quelque chose comme ceci:Modèle de référentiel avec MongoDB: Où initialiser la base de données
internal class MongoContext
{
public MongoContext(string constring)
{
MongoServer server = MongoServer.Create(constring);
this.myDB = server.GetDatabase("MyDB");
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); });
}
private MongoDatabase myDB;
public MongoDatabase MyDB
{ get { return this.myDB; } }
}
je puis aller et mettre en œuvre le référentiel comme ceci:
public class MongoVoyageRepository : IVoyageRepository
{
private readonly MongoContext context;
public MongoVoyageRepository(string constring)
{
this.context = new MongoContext(constring);
}
public void Store(Domain.Model.Voyages.Voyage voyage)
{
MongoCollection<Voyage> mongoVoyages = context.MyDB.GetCollection<Voyage>("Voyages");
//store logic...
}
}
Maintenant, je voudrais savoir si elle est une bonne décision d'instancier un "contexte" comme ça en termes de performance. Est-il sensé de mettre les cartes BsonClass à l'intérieur? Merci de votre contribution.
Cela fonctionne mais j'ai transformé la propriété Instance en une méthode qui accepte une chaîne de connexion puisque je veux injecter la chaîne de connexion dans le référentiel (IoC). – hoetz
@Malkier: J'utilise aussi IoC adn DI, juste fait 'Instance' car de nombreux développeurs ne connaissent pas IoC, DI ou il semble difficile de se désintéresser;) –
@AndrewOrsich Quelle est la classe' NoDefaultPropertyIdConvention'? –