具有NoRM驱动程序的MongoDb中的多态性问题

Mik*_*der 5 c# polymorphism mongodb 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
{
}
Run Code Online (Sandbox Code Playgroud)

像这样的查询有效

var item = mongo.GetCollection<Area>().AsQueryable().FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

但是当我提出类似的查询时

var item = mongo.GetCollection<Content>().AsQueryable().FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

我得到一个InvalidCastException

Object must implement IConvertible.
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*ain 0

您可以在查询后将其强制转换:

mongo.GetCollection<Area>().AsQueryable().Cast<Content>().FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)