【问题标题】:How to fix "SQLite Error 1: 'The specified module could not be found." with EF and Spatialite如何修复“SQLite 错误 1:'找不到指定的模块。”使用 EF 和 Spatialite
【发布时间】:2019-08-19 13:59:43
【问题描述】:

我正在使用 EntityFrameworkCore.Sqlite.NetTopologySuite 创建一个空间数据库来存储一个点,但最终将用于线等。我使用空间数据文档作为参考 https://docs.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 的问题?

【问题讨论】:

  • 嘿!你能解决这个问题吗?我真的遇到了,不知道怎么处理!
  • @FacundoLaRocca 不幸的是,我一直在使用 Postgis,以便项目的其余部分仍然可以进行。我仍然更喜欢使用 Spatialite,但我找不到答案!

标签: c# entity-framework sqlite spatialite


【解决方案1】:

@Jarb 我通过手动将 mod_spatialite\4.3.0.1\runtimes\win-x64\native 的内容复制到项目的 bin 文件夹中(在我的情况下为 bin\Debug\netcoreapp2.2\win10-x64

您可以关注 GitHub 上的帖子here

显然有一个与此错误here 相关的已知问题。

【讨论】:

    猜你喜欢
    • 2021-09-04
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    相关资源
    最近更新 更多