MongoDB - 如何忽略反序列化错误

时间:2014-04-01 09:46:38

标签: c# mongodb deserialization mongodb-.net-driver

我正在使用MongoDB CSharp驱动程序来检索数据集合。不幸的是,这些数据中的一些并不是非常干净的"因为有些字段同时是字符串和整数。正如预期的那样,反序列化过程每次遇到与正确类型不匹配的数据时都会抛出异常。

我已经远远地搜索了网络,以及StackOverflow并且没有运气。在反序列化和移动到下一条记录时,有没有办法简单地处理/忽略异常?

我的代码与此类似:

        MongoClient client = new MongoClient(MongoConnectionString);
        MongoServer server = client.GetServer();
        MongoDatabase database = server.GetDatabase(DatabaseName);

        MongoCollection<BookingLines> bookingLines = database.GetCollection<BookingLines>("bookinglines");

        var query = from e in bookingLines.AsQueryable() where e.Status != "void" select e;

代码通常会在上面的最后一行引发错误。我也尝试将[BsonIgnore]属性添加到某些字段。

任何想法或建议都会非常有用。

2 个答案:

答案 0 :(得分:2)

如果结构和字段dats类型存在很多差异,则无法使用强类型对象而无需额外的努力。我建议您考虑使用BsonDocument,这将允许序列化和反序列化任何文档,如各种教程here所示。

如果需要,您可以将它用作中间格式,并通过一些清理代码将其转换为强类型C#类。

如果要使用强类型类,还可以为here所示的各个字段创建自定义序列化程序,或者按照here所述控制完整的序列化过程。

答案 1 :(得分:1)

您是否可以在插入前清理数据?通常,像SQL一样,您不希望将垃圾放入数据库中。

另一种方式(如果你不需要狡猾的领域)是不是将它们包含在BookingLines对象中?

相关问题