古城热线 发表于 2015-7-7 07:00:29

MongoDB的C#官方驱动InvalidOperationException异常的解决办法

异常情况描述
  有一个“文章”类,其中包含一个“List”类型的属性,“段落”类是抽象类,其子类有“副标题段落”、“文本段落”、“图像段落”、“附件段落”、“列表段落”等类型。
  将“文章”类型的对象存入MongoDB数据库完全没问题,但是从数据库取回则会引发这样的异常:
  
  

解决方法
  之前曾就此问题向 magicDict 请教过,他给出的办法是参照这篇博文:http://www.iyunv.com/zlp520/p/3921435.html
  我没有进行实测,因为同时我找到一个貌似更简便的方法:
  1.在段落类的头部标注特性:




  2.在实例化MongoClient之前声明:



BsonClassMap.LookupClassMap(typeof(MongoModels.段落));
  如此便可完美解决此问题。
  

总结
  除了这种包含抽象类型属性的情况,对于一个集合中默认类型为抽象类型的情况也适用此解决方法。
  接口未进行测试,印象中也会报同样错误,猜想解决方法应该也是如此。
  需注意的是,此方法仅适合于你可以修改源代码的情况,那篇 magicDict 推荐的文章的解决方法在不能修改源代码的情况下也可用。
页: [1]
查看完整版本: MongoDB的C#官方驱动InvalidOperationException异常的解决办法