如何使用MongoDB C#驱动程序更新泛型类型

时间:2013-07-18 15:23:27

标签: c# mongodb

我有一个MongoDB助手类,它接受泛型类型来简化CRUD操作。但是,我在确定更新方法时遇到了一些麻烦。从我读过的所有内容来看,似乎我需要单独更新每个字段。

例如:Update.Set("Field", "New Value").Set("Other field", "Other value");

但我想做的事情是这样的:

void Update(T entity)
{
    collection.Update<T>(entity);
}

这可能吗?或者我是否需要在每个实体的特定于该实体的类中包含更新方法?

1 个答案:

答案 0 :(得分:2)

假设您要更新(替换)整个对象,请执行以下操作:

void Update(T entity)
{
    collection.Save<T>(entity);
}

它将检测_id字段是否已设置并保存正确的项目。

如果您的对象包含主键属性(它应该),您可以使用该属性修饰它以给Mongo一个提示

[BsonId()]

如果您只想更新某些字段,那么您可以始终使用反射来遍历该类型的属性,并将它们添加到Update的setter中。