sqlite - 当为UWP使用Scaffold-DbContext时,出现“无法加载DLL'sqlite3'”

标签 sqlite uwp entity-framework-core

我正在尝试从Sqlite数据库中为UWP app设置Entityframeworkcore DbContext。我做:

Scaffold-DbContext "data source=C:\SqliteDbFiles\Sqlite.db" Microsoft.EntityFrameworkCore.Sqlite


无论我尝试什么,尽管我不断收到此错误:

System.DllNotFoundException: Unable to load DLL 'sqlite3': This operation is only valid in the context of an app container. (Exception from HRESULT: 0x8007109A)
   at Microsoft.Data.Sqlite.Interop.NativeMethods.Sqlite3_sqlite3.sqlite3_open_v2(IntPtr filename, Sqlite3Handle& ppDb, Int32 flags, IntPtr vfs)
   at Microsoft.Data.Sqlite.Interop.NativeMethods.Sqlite3_sqlite3.open_v2(IntPtr filename, Sqlite3Handle& ppDb, Int32 flags, IntPtr vfs)
   at Microsoft.Data.Sqlite.Interop.NativeMethods.sqlite3_open_v2(String filename, Sqlite3Handle& ppDb, Int32 flags, String vfs)
   at Microsoft.Data.Sqlite.SqliteConnection.Open()
   at Microsoft.EntityFrameworkCore.Scaffolding.Internal.SqliteDatabaseModelFactory.Create(String connectionString, TableSelectionSet tableSelectionSet)
   at Microsoft.EntityFrameworkCore.Scaffolding.RelationalScaffoldingModelFactory.Create(String connectionString, TableSelectionSet tableSelectionSet)
   at Microsoft.EntityFrameworkCore.Scaffolding.Internal.SqliteScaffoldingModelFactory.Create(String connectionString, TableSelectionSet tableSelectionSet)
   at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineeringGenerator.GetMetadataModel(ReverseEngineeringConfiguration configuration)
   at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineeringGenerator.GenerateAsync(ReverseEngineeringConfiguration configuration, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Design.DatabaseOperations.ReverseEngineerAsync(String provider, String connectionString, String outputDir, String dbContextClassName, IEnumerable`1 schemas, IEnumerable`1 tables, Boolean useDataAnnotations, Boolean overwriteFiles, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.<ReverseEngineerImpl>d__21.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass4_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Unable to load DLL 'sqlite3': This operation is only valid in the context of an app container. (Exception from HRESULT: 0x8007109A)


任何帮助将不胜感激

最佳答案

在UWP上运行时使用的sqlite3.dll版本在设计时不起作用。您可以在运行命令之前手动下载Precompiled Binaries for Windows之一并将其复制到输出目录(例如bin\x86\Debug)。

一个更简单的解决方案可能是将DbContext放在非UWP项目中,并在生成类之后将它们复制到UWP项目中。

关于sqlite - 当为UWP使用Scaffold-DbContext时,出现“无法加载DLL'sqlite3'”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40139382/

相关文章:

sql - 用于组织历史股票数据的数据库模式

database - 对所有数据库使用单个查询

c# - 如何在 UWP 应用程序中获取当前在 Azure VM 中运行的进程列表

ruby - Travis CI Build 不为 JRuby 平台安装 gem

android - SQLite Android 选择查询问题

uwp - Windows 10 Mobile Creators 更新中的故障转储在哪里?

c# - UWP 中不同设备类型上的 LocalFolderPath 出现问题

sql-server - Entity Framework 7 (Beta7) 迁移脚本生成无效的表名称

c# - EF Core "Cannot insert explicit value for identity column"尽管 IDENTIY_INSERT 设置为 ON

c# - SelectList当bindproperty需要的值是asp.net和entity framework中的一个类