C# 当模型是一个具体类型,现在是一个接口时,如何进行mongoDB迁移
我使用的是MongoDB C#驱动程序版本2.4.4 我在将基于具体类型的旧文档迁移到基于接口的新模型时遇到问题 一开始,模型是这样的: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
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);
})