从不同的计算机部署相同的应用程序时,SQLite 数据被删除

dev*_*998 6 sqlite android xamarin xamarin.forms

我有两台计算机,每台计算机都运行 Community Edition Visual Studio 2015。

两台机器都从同一个 GitHub 主节点构建 Xamarin Forms 应用程序。

每台机器都可以成功地将Android应用程序安装到我的Android手机上。

安装后,应用程序运行没有问题。

两台机器都设置为“在部署之间保留设备上的应用程序数据缓存”

我遇到的问题是应用程序使用的 SQLite 数据库。如果我从其中任何一台计算机安装,该应用程序就可以工作,并且可以保存数据。如果我更改代码并从同一台机器重新部署,SQLite 数据将被保留。但是,如果我切换到另一台机器进行下一次部署,所有数据都会消失。从那时起,可以添加新数据,只要我使用另一台机器,新部署就不会导致数据丢失。如果我切换到另一台机器,下一次部署会删除数据。

我的问题是:无论使用哪台计算机进行部署,我如何才能保持 SQLite 数据库到位?

public class SQLiteService : ISQLiteService
{
    string GetPath(string databaseName)
    {
        if (string.IsNullOrWhiteSpace(databaseName))
        {
            throw new ArgumentException("Invalid database name", nameof(databaseName));
        }
        var sqliteFilename = $"{databaseName}.db3";
        var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
        var path = Path.Combine(documentsPath, sqliteFilename);
        return path;
    }

    public SQLiteConnection GetConnection(string databaseName)
    {
        return new SQLiteConnection(GetPath(databaseName));
    }

    public long GetSize(string databaseName)
    {
        var fileInfo = new FileInfo(GetPath(databaseName));
        return fileInfo != null ? fileInfo.Length : 0;
    }
}
Run Code Online (Sandbox Code Playgroud)