我正在使用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]属性添加到某些字段。
任何想法或建议都会非常有用。
答案 0 :(得分:2)
如果结构和字段dats类型存在很多差异,则无法使用强类型对象而无需额外的努力。我建议您考虑使用BsonDocument
,这将允许序列化和反序列化任何文档,如各种教程here所示。
如果需要,您可以将它用作中间格式,并通过一些清理代码将其转换为强类型C#类。
答案 1 :(得分:1)
您是否可以在插入前清理数据?通常,像SQL一样,您不希望将垃圾放入数据库中。
另一种方式(如果你不需要狡猾的领域)是不是将它们包含在BookingLines对象中?