0

我不知道如何正确解释它,但我有一个类的集合:

using (var db = new LiteDatabase(@"MyData.db")) {
var _collection = db.GetCollection<TestClass>("mycollection");
}


public class TestClass
{
    public TestClass() {
        Task.Run(() => {
                     SomeProperty = ...; //Request to update value from outside
                 });
    }
    public int Id { get; set; }
    public string SomeProperty { get; set; } = String.Empty;
}

如您所见,类在从内部实例化后会更改其属性。

如何在更改属性后将其保存回数据库,但使用新属性?


PS如果我没有很好地解释这个问题或最初选择了错误的路径 - 写下它

4

1 回答 1

1

更改实体类时修改现有数据的最佳方法是使用BsonDocument抽象文档模型。使用BsonDocument您可以将字段更改为字符串并实施规则来更新您的模型,如下所示:

public LiteDatabase OpenDatabase()
{
    var db = new LiteDatabase("data.db");

    // check for database version
    if (db.UserVersion == 0)
    {
        var col = db.GetCollection("mycollection");

        foreach(var doc in col.FindAll())
        {
            doc["NewProperty"] = doc["OldProperty"];

            doc.RemoveKey("OldProperty");

            col.Update(doc);
        }

        db.UserVersion = 1;
    }

    return db;
}
于 2019-11-14T14:36:11.147 回答