c# - 使用 NoRM 驱动程序的 MongoDb 中的多态性问题

标签 c# mongodb polymorphism norm

我有课

[MongoDiscriminated]
public abstract class Content
{
    public int? Id { get; set; }
    public int? ParentId { get; set; }
    public string Slug { get; set; }
    public string Path { get; set; }
    public string Title { get; set; }
}

public class Area : Content
{
}

这样的查询有效

var item = mongo.GetCollection<Area>().AsQueryable().FirstOrDefault();

但是当我像这样查询时

var item = mongo.GetCollection<Content>().AsQueryable().FirstOrDefault();

我得到一个 InvalidCastException

Object must implement IConvertible.

怎么了?将 Area 转换为 Content 应该没有问题。我真的必须制作内容才能实现 IConvertible 吗?

最佳答案

您可以在查询后直接转换它:

mongo.GetCollection<Area>().AsQueryable().Cast<Content>().FirstOrDefault()

关于c# - 使用 NoRM 驱动程序的 MongoDb 中的多态性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4782022/

相关文章:

c# - 使用 MediaPlayer 控件自动播放下一个文件(AxWindowsMediaPlayer)

c# - Office 365 Exchange Online - 客户端凭据 - IMAP 无身份验证

c# - 在C++中定义一个需要在C#和C++中实现的接口(interface)

node.js - 如何在MongoDB中插入500万条记录?

spring - Spring 存储库中的 MongoDB 查询 : limit number of records after filter

java - 根据java逻辑在运行时生成一个类

c# - 向列表框添加控件

具有简单密码认证的 MongoDB 副本集

oop - 从 Ada 中的基类调用重写的方法

scala - 为什么编译器不能推断包对象的类型参数(虽然它对对象工作正常)?