如何处理类和MongoDB文档之间的差异

时间:2013-05-28 19:45:00

标签: c# mongodb

所以我有这样的课程:

public class Customer
{
    public ObjectId Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

让我说我在MongoDB中添加了一些这样的文档。 但是,如果我从班上删除一些字段怎么办? 例如,我只留下IdFirstName

然后,当我尝试以这种方式回忆数据时:

var result = db.Get<Customer>().AsQueryable<Customer>();

我有一个例外

“元素'LastName'与AKMongo.Customer类的任何字段或属性都不匹配。”

当然我理解这一点,为什么会发生这种情况,但如何应对呢?

顺便说一句,我的Get方法只返回

    return _database.GetCollection<Customer>("Customer");

1 个答案:

答案 0 :(得分:1)

一种方法是将BsonIgnoreExtraElements attribute添加到您的班级:

[BsonIgnoreExtraElements]
public class Customer
{
    public ObjectId Id { get; set; }
    public string FirstName { get; set; }
}

另一种是使用类映射:

BsonClassMap.RegisterClassMap<Customer>(cm => {
    cm.AutoMap();
    cm.SetIgnoreExtraElements(true);
});

或者,您可以查看catch all字段。