Когато работите с йерархия на полиморфен тип, вашата променлива за събиране и вашите LINQ заявки трябва да започват от гледна точка на базовия клас. Например, за да прочетете всички документи от тип А обратно от базата данни, трябва да напишете:
var collection = database.GetCollection<D>("mycol");
var query = collection.AsQueryable<D>().OfType<A>();
foreach (var a in query)
{
// process document of type A
}
За целите на диагностиката можете да видите съответната нативна MongoDB заявка, като използвате:
var json = ((MongoQueryable<A>)query).GetMongoQuery().ToJson();
Обърнете внимание, че трябва да подадете заявка към MongoQueryable (не MongoQueryable