linq 使用带有鉴别器和多态性的C# MongoDB v2驱动程序

nhaq1z21  于 2023-01-06  发布在  C#
关注(0)|答案(2)|浏览(112)

Using C# MongoDB LINQ with discriminator准确地描述了我正在尝试做的事情,但我正在尝试使用新的官方2. 0. 1驱动程序。
我有一系列的子类,它们的特殊属性都是从一个包含公共属性的基类继承而来的。鉴别器属性看起来不错,我已经成功地保存了使用这些子类的混合文档。
我期望接下来能够做的是类似于以下内容的查询:

var subsetB = db.GetCollection<BaseClass>("Documents").AsQueryable<BaseClass>().OfType<SubclassB>();

以获取SubclassB类型的所有文档。但是,在我找到的文档和文章中提到的AsQueryable()和OfType()方法似乎不可用。
我是否遗漏了一些东西,或者是否有其他推荐的方法来使用新驱动程序实现这一点?

bksxznpy

bksxznpy1#

没有特别的支持。
您需要显式地为discriminator字段_t添加一个过滤器。

var results = await collection.Find(Builders<SubclassB>.Filter.Eq("_t", nameof(SubclassB))).ToListAsync();
au9on6nz

au9on6nz2#

在最新版本的驱动程序中,这似乎对我有效:

var results = await GetCollection<BaseClass>("Documents").OfType<SubClass>.Find(...);

相关问题