我有一个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));
我有可能吗?
答案 0 :(得分:1)
这似乎有效:
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