[英]C# MongoDB update field via property
有個問題,假設我們有這樣的類型:
public class Foo
{
[BsonId]
public string Id { get; set; }
[BsonElement]
protected string _bar;
public string BarProperty { get => _bar; set => _bar = value; }
}
我想使用 mongo update 通過BarProperty
更新_bar
字段:
public void SetBar(string id, string bar)
{
var f = Builders<Foo>.Filter.Eq(x => x.Id, id);
var u = Builders<Foo>.Update.Set(x => x.BarProperty, bar);
// `Collection` is IMongoCollection<Foo>
Collection.UpdateOne(f, u);
}
更新后我們遇到了一些問題:
_bar
沒有改變;BarProperty
出現在數據庫中的對象中; (如果我使用[BsonIgnore]
它會導致錯誤 - System.InvalidOperationException: Unable to determine the serialization information for x => x.BarProperty.
當我們更新了_bar
(在數據庫和實例中)並且BarProperty
沒有序列化時,有什么辦法嗎?
做到這一點的唯一方法是繞過要更新的實際字段名稱。
public void SetBar(string id, string bar)
{
var f = Builders<Foo>.Filter.Eq(x => x.Id, id);
var u = Builders<Foo>.Update.Set("_bar", bar);
Collection.UpdateOne(f, u);
}
有什么理由不能讓酒吧財產公開嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.