【问题标题】:SQLite.Net-PCL CreateTableAsync add columnSQLite.Net-PCL CreateTableAsync 添加列
【发布时间】:2019-06-24 08:22:39
【问题描述】:

我正在使用 SQLite.Net-PCL 库来管理我的 UWP 应用程序中的 SQLite 数据库。文档说,如果将 a 正确添加到数据模型中,则调用 CreateTableAsync 能够将列添加到表中。但是,当我添加一个属性时,应用程序会抛出一个异常,指出该表没有名为 .这意味着新列不是自动创建的。我在管理具有存储库设计模式的表的数据库调用的类的构造函数中调用 CreateTableAsync。

【问题讨论】:

标签: sqlite uwp


【解决方案1】:

我想你错过了[PrimaryKey, AutoIncrement] 为你的班级模型做的装饰。请检查以下 DataTemple 类。

public class DataTemple
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }     //primary key

    public string Name { get; set; }
    public string Age { get; set; }
}

更多细节你也可以参考sample

【讨论】:

  • 这是个好建议。我已经为所有表设置了 PrimaryKey,但我使用的是 Guid 而不是 AutoIncrement。我改成 AutoIncrement int 还是不行。初始表创建工作正常,但添加列失败。
  • 多次调用 CreateTableAsync 之间可能存在冲突。我创建的第一个表能够添加列。在第一个之后创建的表在添加列时出现问题。我将研究按顺序创建表,并可能在使用时锁定数据库。
【解决方案2】:

我从存储库类构造函数中提取了所有 CreateTableAsync 调用,并将它们移动到单独的 Init 任务中,以便我可以正确等待。现在我可以毫无问题地向任何表添加列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 2016-12-28
    相关资源
    最近更新 更多