使用具有鉴别器和多态性的 C# MongoDB v2 驱动程序
Using C# MongoDB v2 driver with discriminator and polymorphism
Using C# MongoDB LINQ with discriminator 准确描述了我正在尝试做的事情,但我正在尝试使用新的官方 2.0.1 驱动程序。
我有一系列子classes,它们的特殊属性都继承自包含公共属性的基class。鉴别器属性看起来不错,我已经使用子类型成功保存了混合文档。
我希望接下来能够执行的查询类似于:
var subsetB = db.GetCollection<BaseClass>("Documents").AsQueryable<BaseClass>().OfType<SubclassB>();
获取所有SubclassB类型的文档。但是,我找到的文档和文章中提到的AsQueryable()和OfType()方法似乎不可用。
我是不是漏掉了什么,或者是否有其他推荐的方法可以使用新驱动程序实现这一点?
没有对此的特殊支持。
您需要为鉴别器字段显式添加过滤器,_t
。
var results = await collection.Find(Builders<SubclassB>.Filter.Eq("_t", nameof(SubclassB))).ToListAsync();
Using C# MongoDB LINQ with discriminator 准确描述了我正在尝试做的事情,但我正在尝试使用新的官方 2.0.1 驱动程序。
我有一系列子classes,它们的特殊属性都继承自包含公共属性的基class。鉴别器属性看起来不错,我已经使用子类型成功保存了混合文档。
我希望接下来能够执行的查询类似于:
var subsetB = db.GetCollection<BaseClass>("Documents").AsQueryable<BaseClass>().OfType<SubclassB>();
获取所有SubclassB类型的文档。但是,我找到的文档和文章中提到的AsQueryable()和OfType()方法似乎不可用。
我是不是漏掉了什么,或者是否有其他推荐的方法可以使用新驱动程序实现这一点?
没有对此的特殊支持。
您需要为鉴别器字段显式添加过滤器,_t
。
var results = await collection.Find(Builders<SubclassB>.Filter.Eq("_t", nameof(SubclassB))).ToListAsync();