This is how I used to utilize inheritance in Entity Framework (POCO):
ctx.Animals // base class instances (all instances) ctx.Animals.OfType // inher
If the only concern is hardcoding class name, you can do something like this:
collection = db.GetCollection("Animals"); var query = Query.EQ("_t", typeof(Cat).Name); var cursor = collection.Find(query);