簡體   English   中英

C# MongoDB 通過屬性更新字段

[英]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);
}

更新后我們遇到了一些問題:

  1. _bar沒有改變;
  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM