2

我有一个 C# 类,我实例化并用于在集合中执行 CRUD 操作

public class Property
{
   [BsonId]
   public long id { get; set; }

   [BsonElement("address_line")]
   public string address_line { get; set; }
   [BsonElement("city")]
   public string city { get; set; }
   [BsonElement("zip")]
   public string zip { get; set; }
}

我希望能够使用 foreach 循环并使用 $set 构造更新命令,而无需指定每个元素,如下所示:

var updateValues = new List<UpdateBuilder>();

foreach (var element in property.Elements)
    updateValues.Add(Update.Set(element.Name, element.Value));

collection.Update(Query.EQ("_id", property.id), Update.Combine(updateValues));

我这可能吗?

4

1 回答 1

2

这似乎有效:

var updateValues = new List<UpdateBuilder>();

foreach (var element in property.ToBsonDocument().Elements)
{
   if (element.Name != "_id") 
   { 
       updateValues.Add(Update.Set(element.Name, element.Value));
   }
}

collection.Update(Query.EQ("_id", property.id), Update.Combine(updateValues));

不确定是否有更好的解决方案,这避免了链接 .Set() 命令,尽管我需要检查元素是否像 _id 一样不是只读的

于 2013-09-05T16:42:18.130 回答