我有一个MongoDB助手类,它接受泛型类型来简化CRUD操作。但是,我在确定更新方法时遇到了一些麻烦。从我读过的所有内容来看,似乎我需要单独更新每个字段。
例如:Update.Set("Field", "New Value").Set("Other field", "Other value");
但我想做的事情是这样的:
void Update(T entity)
{
collection.Update<T>(entity);
}
这可能吗?或者我是否需要在每个实体的特定于该实体的类中包含更新方法?
答案 0 :(得分:2)
假设您要更新(替换)整个对象,请执行以下操作:
void Update(T entity)
{
collection.Save<T>(entity);
}
它将检测_id字段是否已设置并保存正确的项目。
如果您的对象包含主键属性(它应该),您可以使用该属性修饰它以给Mongo一个提示
[BsonId()]
如果您只想更新某些字段,那么您可以始终使用反射来遍历该类型的属性,并将它们添加到Update的setter中。