これは、Entity Framework (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 が継承を簡単に処理できるようにすることでした。