C# 当模型是一个具体类型,现在是一个接口时,如何进行mongoDB迁移

C# 当模型是一个具体类型,现在是一个接口时,如何进行mongoDB迁移,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我使用的是MongoDB C#驱动程序版本2.4.4 我在将基于具体类型的旧文档迁移到基于接口的新模型时遇到问题 一开始,模型是这样的: public class DeliveryRoute : MongoDbItem { ... public List<Step> Steps { get; set; } ... } 该字段已创建 但是,当脚本创建“\t”时,驱动程序似乎忽略了它。 导致错误的原因: 无法确定要为接口反序列化的对象的实际类型 键入PathTr

我使用的是MongoDB C#驱动程序版本2.4.4

我在将基于具体类型的旧文档迁移到基于接口的新模型时遇到问题

一开始,模型是这样的:

public class DeliveryRoute : MongoDbItem
{
    ...
    public List<Step> Steps { get; set; }
    ...
}
该字段已创建

但是,当脚本创建“\t”时,驱动程序似乎忽略了它。 导致错误的原因:

无法确定要为接口反序列化的对象的实际类型 键入PathTracker.Common.Interfaces.IStep

有人知道我做错了什么?

也许问题和你的一样?可以通过
BsonSerializer.RegisterSerializer
为接口类型注册序列化程序。这样驱动程序就可以理解您希望使用的类。这可以解决无法确定接口类型的反序列化对象的实际类型的错误。对另一个问题的回答也可以是一个解决方案。
public class DeliveryRoute : MongoDbItem
{
    ...
    public List<IStep> Steps { get; set; }
    ...
}
db.getCollection('MongoDBDeliveryRouteCollection').find({"UnitCode":"016302", "_id":"01630220181030013818"})
.forEach(function(deliveryRouteDocument){

        deliveryRouteDocument.Steps.forEach(function(step){

              if(!step.hasOwnProperty('_t')){
                  step._t = "Step";
              }
        });
       db.getCollection('MongoDBDeliveryRouteCollection').save(deliveryRouteDocument);
    })