【问题标题】:Issues in Storing array in SQLite3 using C#使用 C# 在 SQLite3 中存储数组的问题
【发布时间】:2017-06-14 19:15:59
【问题描述】:

我有一个要求,如果找到一个新对象,我会将其唯一 ID 添加到继承该类的所有父类中。例如 如果 C:B 和 B:A(C 扩展 B 和 B 扩展 A),则如果为 C 找到一个新对象,由于继承,该对象也是 B 和 A 类型,因此该对象进入其中一列对于包含其所有子实例的 A 和 B (childs)。因此,我想将它作为一个数组。 为此,我正在读取 A 和 B 行并获取子列,将其反序列化为数组并将其放回 db。 现在这肯定有锁定问题。 例如,如果同时发现 D:C 或 D:B 的实例,则它们都将读取相同的副本,最后一次写入将赢得擦除先前写入的实例。

有什么办法可以通过在我的事务(在本例中为读取-->更新数组-->写入)完成之前不允许其他人读取它来消除此问题。

有没有推荐的方法来解决这个问题。

【问题讨论】:

    标签: sqlite sqlite-net database-locking


    【解决方案1】:

    如果我正确理解您的要求,那么我认为您需要使用独占锁嵌套您的事务,例如:

    sqlite3_exec(db, "BEGIN EXCLUSIVE", 0, 0);
    ...
    sqlite3_exec(db, "END", 0, 0);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-21
      • 2020-03-06
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 2018-09-25
      相关资源
      最近更新 更多