sql >> Base de Datos >  >> NoSQL >> MongoDB

Usando C# MongoDB LINQ con discriminador

Cuando trabaje con una jerarquía de tipos polimórficos, su variable de colección y sus consultas LINQ deben comenzar en términos de la clase base. Por ejemplo, para leer todos los documentos de tipo A de la base de datos, escribiría:

var collection = database.GetCollection<D>("mycol");
var query = collection.AsQueryable<D>().OfType<A>();
foreach (var a in query)
{
    // process document of type A
}

Para fines de diagnóstico, puede ver la consulta MongoDB nativa correspondiente usando:

var json = ((MongoQueryable<A>)query).GetMongoQuery().ToJson();

Tenga en cuenta que debe enviar la consulta a MongoQueryable (no a MongoQueryable) porque la llamada OfType() cambió el tipo de IQueryable.