有没有办法检测LiteDb的变化?

时间:2018-03-29 07:34:21

标签: c# xamarin xamarin.forms nosql litedb

有没有办法检测模型和LiteDb之间的差异?

例如。

<!DOCTYPE html>
<html>
<body>

<div id="button1">
Button-1
</div>

<script>
var object1 = {

    button1: document.getElementById('button1'),

    eventHandler: function() { 
		this.button1.addEventListener('click', this.alertSomething);
    },

    alertSomething: function() {
        alert('Cool');
    }

};

object1.eventHandler.call(object1);

</script>

</body>
</html>

liteDb的表格具有相同的列。

我想在我的模型中添加一个新属性

[Table('table')]
public class Table
{
   public int Id { get; set; }
   public string Name { get; set; }
}

如何检测最近将 NewCol 添加到模型中并且LiteDb表中没有相等的列

1 个答案:

答案 0 :(得分:0)

无法在模型上检测到此更改,因为对于LiteDB引擎,两个类都转换为BsonDocument,这是一个通用对象表示形式,可转换为JSON / BSON以存储在磁盘上。在您的示例中,如果您使用第一个模型插入文档,LiteDB将转换为:

{ Id: 1, Name: "John" }

在第二个模型中,您将拥有:

{ Id: 1, Name: "John", NewCol: "anyvalue" }

在这两种情况下,您都可以加载/保存数据,因为缺少的属性被定义为NULL。

但是,如果您需要跟踪数据库模型版本,则可以使用内部“UserVersion”。这是一个简单的内部int获取/设置值,您可以跟踪数据库模型版本。您可以查看此问题以获取更多信息:https://github.com/mbdavid/LiteDB/issues/778