RegisterClassMap不工作C#驱动程序mongodb派生类
各位!! 我刚刚从1.4升级到mongodb c#驱动程序1.9.1。现在,我在尝试从集合中获取文档时出错。集合具有属性“SomeClass”,该属性的类型为“DerivedClass”。因此,DerivedClass是一个3级文档RegisterClassMap不工作C#驱动程序mongodb派生类,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,各位!! 我刚刚从1.4升级到mongodb c#驱动程序1.9.1。现在,我在尝试从集合中获取文档时出错。集合具有属性“SomeClass”,该属性的类型为“DerivedClass”。因此,DerivedClass是一个3级文档 class CollectionClass { SomeClass SomeClassProperty } class SomeClass { DerivedClass DerivedClassProperty } class BaseClass
class CollectionClass
{
SomeClass SomeClassProperty
}
class SomeClass
{
DerivedClass DerivedClassProperty
}
class BaseClass
{
string id;
float floatValue;
}
class DerivedClass
{
int intValue;
}
我使用的映射如下:
BsonClassMap.RegisterClassMap<BaseClass>(cm =>
{
cm.AutoMap();
cm.MapIdMember(c => c.id);
cm.GetMemberMap(c => c.id).SetElementName("id");
cm.GetMemberMap(c => c.floatValue).SetElementName("fv");
}
BsonClassMap.RegisterClassMap<DerivedClass>(cm =>
{
cm.AutoMap();
cm.GetMemberMap(c => c.intValue).SetElementName("iv");
}
BsonClassMap.RegisterClassMap(cm=>
{
cm.AutoMap();
cm.MapIdMember(c=>c.id);
cm.GetMemberMap(c=>c.id).SetElementName(“id”);
cm.GetMemberMap(c=>c.floatValue).SetElementName(“fv”);
}
BsonClassMap.RegisterClassMap(cm=>
{
cm.AutoMap();
cm.GetMemberMap(c=>c.intValue).SetElementName(“iv”);
}
当我使用findOne()请求文档时,我遇到了一个错误:“反序列化类CollectionClass的SomeClass属性时出错:反序列化类SomeClass的DerivedClass属性时出错:元素“id”与类DerivedClass的任何字段或属性都不匹配。”
有人有想法吗?
提前感谢。我找到了一个解决方案。我找到了一个解决方案。我不明白为什么,但是在幕后(或者如果你称之为“冻结”)之后,id会自动映射到_id。因此,将cm.MapIdMember(c=>c.id);替换为cm.SetIdMember(null);会有所帮助