我有两台计算机,每台计算机都运行 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 != …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个嵌套在两个 forEach 循环中的布尔属性。
循环工作正常,但出现错误: TypeError: Cannot set property 'hasAtLeastOne' of undefined。
有人有什么想法吗?
谢谢。
export classItemComponent implements OnInit {
hasAtLeastOne: boolean = false;
onSubmit(event) {
this.hasAtLeastOne = false;
this.user.Item.forEach(function (value) {
value.ItemMemberships.forEach(function (value) {
if (value.ItemMembershipActive == 1)
{
this.hasAtLeastOne = true; // This line fails.
}
})
});
}
}
Run Code Online (Sandbox Code Playgroud)