加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用Sqlite64作为内存数据库的ServiceStack OrmLite导致缺少auth

发布时间:2020-12-12 18:55:11 所属栏目:百科 来源:网络整理
导读:我试图在我的单元测试中使用Sqlite作为内存数据库和ServiceStack ORMlite. 如果我用SQLite保存到文件运行我的测试,即.使用connectionstring "Data Source=|DataDirectory|unittest.db;Version=3;" ,它工作正常,ServiceStacks生成auth表 userRepository.Creat
我试图在我的单元测试中使用Sqlite作为内存数据库和ServiceStack ORMlite.

如果我用SQLite保存到文件运行我的测试,即.使用connectionstring

"Data Source=|DataDirectory|unittest.db;Version=3;"

,它工作正常,ServiceStacks生成auth表

userRepository.CreateMissingTables();

但是,当我尝试使用此连接字符串将SQLite用作内存数据库时

":memory:"

说的时候我有例外

SQLite error
no such table: UserAuth

我第一次尝试通过这样做来获取用户

userRepository.GetUserAuthByUserName(...)

这是在我调用了userRepository.CreateMissingTables()之后,如果我切换到使用带有文件数据库的SQLite,它就能正常工作.有谁知道问题可能是什么? (由于Ormlite 3.9.4中对ORM lite版本1.0.65.0的错误引用,我不得不降级到ORMLite版本3.9.0)

解决方法

ServiceStack v5

最新版本的ServiceStack会自动禁用SQLite的AutoDisposeConnection:memory:connections,因此您可以正常配置OrmLiteConnectionFactory,例如:

var dbFactory = new OrmLiteConnectionFactory(":memory:",SqliteDialect.Provider);

var sqliteRepo = new OrmLiteAuthRepository(dbFactory);
sqliteRepo.CreateMissingTables();

ServiceStack v3

每当关闭内存数据库中Sqlite的数据库连接时,就会丢失数据库.

因此,当您配置数据库工厂时,您需要告诉它永远不要处理连接,您可以使用autoDisposeConnection构造函数参数,autoDisposeConnection:false,dialectProvider:SqliteDialect.Provider); var sqliteRepo = new OrmLiteAuthRepository(dbFactory); sqliteRepo.CreateMissingTables();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读