MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

ne peut pas convertir de 'MongoDB.Driver.IMongoCollection<>' en 'System.Collections.Generic.IEnumerable<>'

Dans le nouveau pilote MongoDB, l'ensemble est désormais basé sur des méthodes asynchrones, de sorte que les anciennes méthodes d'interrogation des données ne s'appliquent plus.

Fondamentalement, vous voudriez créer une classe MongoRepository, avec une méthode de recherche, et ce référentiel pourrait avoir la méthode Find suivante :

public class MongoRepository<T>
{

    protected IMongoCollection<T> _collection;

    public MongoRepository(string collectionName) 
    {
        // Get your mongo client and database objects here.
        _collection = _mongoDb.GetCollection<T>(collectionName);
    }

    public async Task<IList<T>> Find(Expression<Func<T, bool>> query)
    {
        // Return the enumerable of the collection
        return await _collection.Find<T>(query).ToListAsync();
    }

}

Cela pourrait alors être implémenté comme ceci :

MongoRepository<Registration> repo = new MongoRepository("Registrations");
IList<Registration> registrations = repo.Find(i => i.SomeProperty == true);

Il y a quelques bonnes informations sur la façon dont les modifications de l'API peuvent être mises en œuvre ici :http://mongodb.github.io/mongo-csharp-driver/2.0/upgrading/