如何使用EF和Spatialite修复“SQLite Error 1:'指定的模块无法找到。”

3
我正在使用EntityFrameworkCore.Sqlite.NetTopologySuite创建一个空间数据库,目前只存储点,但最终将用于存储线等。我已经参考了空间数据文档https://learn.microsoft.com/en-us/ef/core/modeling/spatial#sqlite。数据需要保存到Spatialite数据库中。
通过阅读文档,我按照所述的方式反映了代码,包括在选项生成器中添加“UseNetTopology”,并在类中创建了一个点。
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite("Filename=TestDb.db", x => x.UseNetTopologySuite());
    }

尝试使用 update-database 更新数据库时出现以下错误:
SQLite Error 1: 'The specified module could not be found.'. 

我试图通过创建一个空项目并从头开始工作来找到问题,但结果却出现了相同的错误。

这是整个日志:

'.
   at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteNonQuery()
   at Microsoft.EntityFrameworkCore.Infrastructure.SpatialiteLoader.Load(DbConnection connection)
   at Microsoft.EntityFrameworkCore.Sqlite.Storage.Internal.SqliteRelationalConnection.LoadSpatialite()
   at Microsoft.EntityFrameworkCore.Sqlite.Storage.Internal.SqliteRelationalConnection.Open(Boolean errorsExpected)
   at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
   at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
SQLite Error 1: 'The specified module could not be found.
'.

我找不到任何其他与此问题相同的帖子。

编辑 19/8/19: 我刚刚创建了一个新的空项目,通过从 Spatialite 网站安装并使用 SQLite 连接到空间数据库来进行测试,没有使用实体框架。我通过手动方式执行时出现了相同的错误,因此这可能是 Spatialite 的问题?


嘿!!! 你解决了这个问题吗?我正在遇到同样的问题,不知道该如何处理! - Facundo La Rocca
很遗憾,我一直在使用Postgis,以便项目的其余部分仍然可以继续进行。我仍然更喜欢使用Spatialite,但我找不到答案! - Jarb
1个回答

0

@Jarb 我通过手动将mod_spatialite\4.3.0.1\runtimes\win-x64\native文件夹中的内容复制到我的项目的bin文件夹中(在我的情况下是bin\Debug\netcoreapp2.2\win10-x64),暂时解决了这个问题。

您可以在GitHub上这里关注该线程。

显然,这个bug与已知问题有关这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接