我有一个Xamarin移动应用程序,已经添加了一些新功能,为此我还添加了新的数据库表。我还为这些创建了新的迁移。但是,当我运行此迁移时,它实际上会清除数据库中的所有旧数据,而不仅仅是添加表等。
要创建迁移,我遵循MarkSmith.8123 here的说明。实际上,我之前曾使用相同的说明进行过一次迁移。
[要尝试,我首先从Google Play安装该应用。我登录,进行一些本地更改,然后关闭该应用程序。然后,我通过在Visual Studio中进行调试来安装新版本(带有迁移)。当我再次启动该应用程序时,所有旧数据都消失了,请登录信息并进行本地更改。我也尝试过使用Visual Studio从较早的提交(没有新内容)进行首次安装,没有明显的区别。
我正在使用Microsoft.EntityFrameworkCore.Sqlite 2.0.1。]
public class MyDbContext : Microsoft.EntityFrameworkCore.DbContext { ... public MyDbContext(string databasePath) { DatabasePath = databasePath; AddInitialMigrationForPreMigrationInstalls(); Database.Migrate(); } private void AddInitialMigrationForPreMigrationInstalls() { if (Database.Exists()) // This is just an extension doing: dbFacade.GetService<IRelationalDatabaseCreator>().Exists() { Database.ExecuteSqlCommand(@" CREATE TABLE IF NOT EXISTS ""__EFMigrationsHistory"" ( ""MigrationId"" TEXT NOT NULL CONSTRAINT ""PK___EFMigrationsHistory"" PRIMARY KEY, ""ProductVersion"" TEXT NOT NULL ); INSERT OR IGNORE INTO ""__EFMigrationsHistory"" (""MigrationId"", ""ProductVersion"") VALUES ('20180829103834_InitialCreate', '2.0.1-rtm-125'); "); } } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite($"Filename={DatabasePath}"); } ... }
我希望db中的所有数据都保持不变,而应该已经添加了新表。
我真的不知道该如何进一步研究。我怎么知道发生了什么?
我有一个Xamarin移动应用程序,已经添加了一些新功能,为此我还添加了新的数据库表。我还为这些创建了新的迁移。但是当我运行此迁移时,它实际上清除了...
Android应用已沙箱化。您的侧面加载的应用无法访问从Google Play商店下载的应用的数据库文件。