【发布时间】:2019-12-25 15:12:59
【问题描述】:
首先我运行以下设置
Xamarin Forms - Entity Framework Core 2.2 - SQLite - Android - DEBUG
一切正常。正确生成 .db 文件并在数据库上执行查询。
然后我为生产准备了应用程序,我将 DEBUG 更改为 RELEASE 编译,并打包成一个 apk。安装在设备上时,应用程序在调用 Database.Migrate() 或 Database.EnsureCreated() 时总是崩溃
我尝试过的每个应用程序的情况都是一样的。应用程序在模拟器和处于调试模式的设备上正常运行。创建数据库时,每台 Android 设备上的应用都会崩溃。
这是DbContext的实例化
public ItemContext(DbContextOptions<ItemContext> options)
: base(options)
{
//Database.Migrate();
Database.EnsureCreated();
}
这就是构造函数的调用方式
public void Load()
{
string databasePath = DependencyService.Get<ILocalFileStorageService>().GetDatabaseFilePath("ItemSQLite.db");
string connectionString = $"Filename={databasePath}";
DbContextOptions<ItemContext> options = new DbContextOptionsBuilder<ItemContext>()
.UseSqlite(connectionString)
.Options;
dataService = new DataService(new ItemContext(options));
}
这就是我在 Android 上检索文件路径的方式。
public string GetDatabaseFilePath(string fileName)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
return Path.Combine(path, fileName);
}
在 Android 设备监视器上查看时会显示很长的错误
开头是
稍后的某个地方列出了EnsureCreated 方法
问题:为什么会发生这种情况以及如何使应用程序可以在生产环境中运行?
【问题讨论】:
标签: c# sqlite xamarin.forms entity-framework-core production-environment