SQLite-Net Extensions - CreateTable函数是否会改变我现有的表?

时间:2016-03-30 14:31:57

标签: c# sqlite xamarin sqlite-net

我正在使用SQLite-net和TwinCoders NuGet在MvvmCross Xamarin项目中使用扩展方法。我想让数据库保持更新,即使我将来会修改模型。

我的问题是:如果我使用CreateTable函数创建基于模型的SQLite表,并且平板电脑/手机上已存在数据库,但它有不同的结构(让我们说该表有在上次更新中添加了一个缺少的列,这个函数会改变现有的表吗?谢谢!

2 个答案:

答案 0 :(得分:2)

感谢您的回答! SQLite-Net确实实现了自动迁移。它将SQLite缺少“ALTER DROP COLUMN”和“ALTER RENAME COLUMN”命令视为如下:

  • 如果更改了一列的名称,则会使用新名称创建一个新列,查询将忽略旧列
  • 如果列被删除,那么它将保留在数据库中,但查询将忽略它

我没有尝试在更改一列(属性)的数据类型时会发生什么,但我希望在我们的项目中不会出现这种情况。

答案 1 :(得分:0)

对我来说,答案一直是肯定的。我更改了模型中某个属性的名称,最终将数据保留在原位,每个现有记录都有新属性,但它是空的。

所以它是这样的:

原件:

class Model {
    int Id { get; set; }
    string Date { get; set; }
}

更改:

class Model {
    int Id { get; set; }
    string Dates { get; set; }
}

现在所有记录仍然有Id个值并且没有被删除,但它们都有空Dates列,正如预期的那样。

毋庸置疑,没有创建新表。

编辑:还要注意我只使用SQLite-Net,没有扩展库或任何东西,但最终结果应该是相同的。