我正在尝试使用新的 Entity Framework Core 创建 Xamarin Forms 应用程序。该应用程序针对 android 6.0,但我的模拟器运行的是 Android 7.0。我在android项目上安装了以下相关的Nuget包:
- Microsoft.EntityFrameworkCore --> 1.1.1
- Microsoft.EntityFrameworkCore.Sqlite --> 1.1.1
当在 Android 上访问我的 DbContext 时,会弹出一条消息:检测到未经授权访问“/system/lib/libsqlite.so”的 native 库存在问题。
This Xamarin 论坛线程建议,这是由于不再支持 native SqLite 二进制文件(在 Android 7 上?),并且常见的修复似乎是切换到 SqLite.Net PCL。
但是,由于 Microsoft.EntityFrameworkCore.Sqlite 依赖于 Microsoft.Data.Sqlite,而后者又依赖于 native SqLite 包,我不能只替换它(或者我可以吗?)
奇怪的是,尽管错误消息另有提示,但数据访问似乎有效。至少运行迁移并重复写入数据库将创建新的 ID。
当然,我可以放弃 EF Core,但我猜很多人都在考虑在未来将它用于 Xamarin。因此,如果有人能找到/知道修复方法,那就太好了。
最佳答案
我遇到了同样的问题。我使用以下库修复了此问题:sqlite-net-pcl(版本 1.2.0)、SQLitePCLRaw.bundle_green、SQLitePCLRaw.core、SQLitePCLRaw.lib.e_sqlite3.android、SQLitePCLRaw.provider.e_sqlite3.android。
关于sqlite - Xamarin 与 Entity Framework 核心 : Error: unauthorized access to "/system/lib/libsqlite.so" on Android 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43177615/