处理 collection 中 class 的内部变化
Handling inner changes of class in collection
我不知道如何正确解释,但我有 collection 的 classes:
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;
}
如您所见,class 在从内部实例化后会更改其属性。
如何在更改 属性 后,将其保存回数据库,但使用新的 属性?
P.S。如果我没有很好地解释问题或最初选择了错误的路径 - 写下来
更改实体时修改现有数据的最佳方法 class 是使用 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;
}
我不知道如何正确解释,但我有 collection 的 classes:
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;
}
如您所见,class 在从内部实例化后会更改其属性。
如何在更改 属性 后,将其保存回数据库,但使用新的 属性?
P.S。如果我没有很好地解释问题或最初选择了错误的路径 - 写下来
更改实体时修改现有数据的最佳方法 class 是使用 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;
}