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

时间:2011-01-24 12:36:33

标签: 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吗?

2 个答案:

答案 0 :(得分:0)

您可以在查询后投出它:

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

答案 1 :(得分:0)

刚刚在github上提交了一个pull请求来修复此异常:

https://github.com/atheken/NoRM/pulls