MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Usando C # MongoDB LINQ com discriminador


Ao trabalhar com uma hierarquia de tipo polimórfico, sua variável de coleção e suas consultas LINQ devem começar em termos da classe base. Por exemplo, para ler todos os documentos do tipo A do banco de dados, você escreveria:
var collection = database.GetCollection<D>("mycol");
var query = collection.AsQueryable<D>().OfType<A>();
foreach (var a in query)
{
    // process document of type A
}

Para fins de diagnóstico, você pode ver a consulta nativa correspondente do MongoDB usando:
var json = ((MongoQueryable<A>)query).GetMongoQuery().ToJson();

Observe que você precisa converter a consulta para um MongoQueryable (não MongoQueryable) porque a chamada OfType() alterou o tipo do IQueryable.