sqlite - EF Core SqlLite 内存中没有这样的表?
问题描述
我使用 UseInMemoryDatabase() 配置了我的 ASP.NET Core 2.2 应用程序,它运行良好。现在我将其更改为内存中的关系 Sqlite。
启动.cs
services.AddDbContext<ApplicationContext>(options => options.UseSqlite("Datasource=file::memory:?cache=shared"));
我在单元测试中使用这种 Sqlite 内存方法并且效果很好。所以决定我想在我的应用程序中使用相同的内存中 Sqlite(为了测试一些东西,稍后当应用程序准备好时,我将在磁盘上创建 sqlite 文件)。问题是当我启动我的应用程序时。我收到类似的错误SqliteException: SQLite Error 1: 'no such table: USERS'
。我调试了我的存储库类,发现上下文有表用户。因此,内存中的 Sqlite 在单元测试中工作正常,但在实际应用程序中会引发错误。这是为什么?感谢您的任何提示。
解决方案
创建并将迁移应用到内存中的 SQLite 数据库。您必须在每次应用程序启动时应用它们,因为数据库只存在于内存中,直到应用程序退出。
推荐阅读
- javascript - 推送到索引处的对象数组
- typescript - Typescript:使用泛型数组按照泛型列表的顺序创建具有泛型的对象数组
- apache-kafka - 如何在 Kafka Streams 应用程序中进行订购
- python - 使用 OpenCv 在网络摄像头上创建和捕获子区域
- c++ - 安全地传递对象的动态数组而不强制复制
- c# - C# 控制台和 PS 或 CMD 之间的脚本输出不同
- google-apps-script - 如何使用 Appscript(如链接对象)嵌入一个特别的 Slide into Google Doc?
- graphql - 如何在 Fauna 中替换多对多关系中的所有连接
- python - 如何更改嵌套列表中值的变量类型
- reactjs - React Hooks:渲染总是在 setState + setTimeout 之后完成吗?