我正在使用SQLite-net和TwinCoders NuGet在MvvmCross Xamarin项目中使用扩展方法。我想让数据库保持更新,即使我将来会修改模型。
我的问题是:如果我使用CreateTable函数创建基于模型的SQLite表,并且平板电脑/手机上已存在数据库,但它有不同的结构(让我们说该表有在上次更新中添加了一个缺少的列,这个函数会改变现有的表吗?谢谢!
答案 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,没有扩展库或任何东西,但最终结果应该是相同的。