使用Sqlite进行ASP.NET核心单元测试-表不存在

时间:2019-08-01 14:36:29

标签: asp.net-core

我试图设置一些集成测试以使用Sqlite,但是当我运行测试时,我看到错误提示我各种数据库表不存在。

最初在测试中,我使用的是“ UseInMemoryDatabase”,但似乎不支持使用FromSql,所以我改用了Sqlite。

这是我配置Dbcontext的方式;

// Create a new service provider.
                var serviceProvider = new ServiceCollection()
                    .AddEntityFrameworkSqlite()
                    .AddEntityFrameworkProxies()
                    .BuildServiceProvider();

                // Add a database context (AppDbContext) using an in-memory database for testing.
                services.AddDbContext<ApplicationDbContext>(options =>
                {
                    options.UseLazyLoadingProxies()
                        .UseSqlite("DataSource=:memory:")
                        .UseInternalServiceProvider(serviceProvider);
                });

在启动时,我试图为数据库添加一些数据。当我使用标准的InMemoryDatabase时,当我在项目中不使用FromSql方法时,它可以很好地工作,但是当我切换到Sqlite时,它似乎并没有自动创建数据库表。

0 个答案:

没有答案