0

有什么方法可以检测模型和 LiteDb 之间的差异吗?

例如。

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

并且 liteDb 具有具有相同列的表。

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

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

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

4

1 回答 1

1

无法检测模型上的这种变化,因为对于 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

于 2018-04-04T14:18:06.357 回答