这就是我过去在实体框架 (POCO) 中利用继承的方式:
ctx.Animals // base class instances (all instances)
ctx.Animals.OfType<Cat> // inherited class Cat's instances only
ctx.Animals.OfType<Dog> // inherited class Dog's instances only
这是我在 MongoDb(MongoDb 参考)中找到的唯一类似方式:
var query = Query.EQ("_t", "Cat");
var cursor = collection.FindAs<Animal>(query);
请注意,在后一种情况下,我必须处理鉴别器(“_t”)并对我的类名进行硬编码,这不太方便而且看起来很糟糕。如果我错过了查询,我会在枚举尝试时遇到异常。我错过了什么吗?我的建议是“按原样”存储对象的文档 Db 应该轻松处理继承。