首页 新闻 会员 周边

dotnet core 用SQLite 做数据库,跑集成测试,出现“table exist” 错误

0
悬赏园豆:50 [已解决问题] 解决于 2018-02-28 17:12
用SQLite 为数据库,在`.NET-Core` 上跑集成测试,发现第一次运行时,始终会出现下面的错误。 `Microsoft.Data.Sqlite.SqliteException : SQLite Error 1: 'table "XXX" already exists'.` 然后,第二次再次执行的话,就能够成功运行, 请问这是什么原因? 每次把.db 数据库文件删除第一次跑就会出现错误。
BUTTERAPPLE的主页 BUTTERAPPLE | 老鸟四级 | 园豆:3190
提问于:2017-06-23 14:27
< >
分享
最佳答案
0

使用 SQLite Memory 暂时没有出现上述错误。

var connectionStringBuilder = new SqliteConnectionStringBuilder { DataSource = ":memory:" };
var connectionString = connectionStringBuilder.ToString();
var connection = new SqliteConnection(connectionString);
services.Configure(options => options.UseSqlite(connection));

Reference Link:
A DIFFERENT APPROACH TO TEST YOUR ASP.NET CORE APPLICATION

BUTTERAPPLE | 老鸟四级 |园豆:3190 | 2017-06-23 16:17

感觉你有create table语句执行多次了。

幻天芒 | 园豆:37175 (高人七级) | 2017-06-23 16:29

感觉你有create table语句执行多次了。

幻天芒 | 园豆:37175 (高人七级) | 2017-06-23 16:29

@幻天芒: 似乎只有一个 dbContext.Database.EnsureCreated() 执行这句的时候,就会报错。

BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2017-06-23 16:31

@BUTTERAPPLE: 这个本身是确保库是否存在,理应没什么问题。可能需要调试下对应的源码。

幻天芒 | 园豆:37175 (高人七级) | 2017-06-23 21:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册