Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows通用现有应用程序向SQLite表添加新列_Sqlite_Uwp_Windows Store Apps_Win Universal App - Fatal编程技术网

Windows通用现有应用程序向SQLite表添加新列

Windows通用现有应用程序向SQLite表添加新列,sqlite,uwp,windows-store-apps,win-universal-app,Sqlite,Uwp,Windows Store Apps,Win Universal App,我们在Windows应用商店上发布了Windows 8.1通用应用程序。由于需求变化,现在我们需要向现有表中添加一些字段。我们在Windows运行时(Windows 8.1)中使用了SQLite,在Windows Phone 8.1中使用了SQLite。现在,如果我们向现有表中添加一些新字段(通过更新模型类),那么现有用户更新应用程序时会出现任何问题吗 如果我们创建一个新表,那么这会不会导致任何问题,或者比添加新字段更安全?即使使用现有的SQLite数据库,向现有表添加一个新列也是完全安全的。创

我们在Windows应用商店上发布了Windows 8.1通用应用程序。由于需求变化,现在我们需要向现有表中添加一些字段。我们在Windows运行时(Windows 8.1)中使用了SQLite,在Windows Phone 8.1中使用了SQLite。现在,如果我们向现有表中添加一些新字段(通过更新模型类),那么现有用户更新应用程序时会出现任何问题吗


如果我们创建一个新表,那么这会不会导致任何问题,或者比添加新字段更安全?

即使使用现有的SQLite数据库,向现有表添加一个新列也是完全安全的。创建新表也是如此。具体过程取决于您使用的SQLite库

如果使用SQL查询直接查询数据库,那么将使用
altertable。。。添加列
查询。如果您使用的是像
sqlite net pcl
这样的库,那么在运行
CreateTable
方法时,您可以立即进行自动迁移。正如上面所说:

自动迁移目前只支持添加新列。如果您的类具有与表中的列不关联的新属性,则alter table。。。将执行“添加列”命令以更新数据库。这些新列没有默认值,因此将为空

提示 更改模型时,请始终根据数据库的早期版本测试更改。这可以通过两种方式实现:

  • 从应用商店安装现有版本,启动应用程序并使用它,使其包含一些数据,然后关闭它并转到
    C:\Users\[UserName]\AppData\Local\Packages
    。在这里导航到
    软件包
    ,然后在那里找到应用程序的软件包文件夹。进入
    LocalState
    ,您应该在那里找到您的
    sqlite
    数据库。将其复制到某处,卸载存储版本并启动新版本进行调试,并在
    App.xaml.cs
    构造函数中放置断点。当调试器停止时,将原始数据库复制回app package
    LocalState
    文件夹中的同一位置,然后继续调试。观察数据库是否正确迁移
  • 使用Git源代码管理,进入上一版本的历史记录提交,安装应用程序进行调试,用一些数据填充数据库,关闭应用程序。现在转到最新的提交并启动应用程序进行再次调试。验证迁移是否有效