前缀:使用.net 4.6.1,C#7,C#MongoDb 2.5.0
一般问题:
我有一个小类,其中包含一个抽象类型的字段。
[BsonIgnoreExtraElements(true)]
public sealed class FatherAlmighty
{
[BsonId]
public ObjectId Id;
public MyAbstract Item;
}
此外,这个MyAbstract
显然是一个抽象类,至少有2个继承类。
[BsonIgnoreExtraElements(true)]
[BsonKnownTypes(typeof(Child1))]
public abstract class MyAbstract
{
public string DontCare;
}
[BsonIgnoreExtraElements(true)]
public sealed class Child1 : MyAbstract
{
public string ChildishField;
}
BsonKnownTypes
包含从MyAbstract
继承的每一种类型的类,但为了简单起见,我只写了1。
我需要做什么:由于架构需求,我需要能够在mongo上向Child1
添加(仅添加)字段,然后部署应用程序版本以使用此值。
问题:每当我向文档添加值时,在应用程序部署之前,我都会遇到反序列化问题。
例如,如果我在文档中添加字段AnotherChildishField
(注意文档和不类),其值为" myStr",我希望所有内容都能正常工作忽略了这个新添加的领域,但错误正在让猫和狗下雨。
反序列化类< .....>的Item字段时发生错误:Element' AnotherChildishField'不匹配类< .....>
的任何字段或属性
我错过了什么?几乎所有东西都添加了IgnoreExtraElements。