有没有办法检测模型和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表中没有相等的列
答案 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