我的问题的上下文是,我想为执行一些关系特定代码的应用程序创建一些单元测试,因此我无法使用标准的.UseInMemoryDatabase(databaseName: dbContextName)
更改为.UseSqlite("DataSource=:memory:")
而是为了解决该问题。
但是现在我得到了:
SqliteException:SQLite错误1:“没有这样的表:ControlGroup”。
我该如何解决?
答案 0 :(得分:1)
您需要在测试范围内保持连接打开并创建数据库。
public class Tests : IDisposable
{
private readonly SqliteConnection _connection;
private readonly DbContextOptions _options;
public Tests()
{
_connection = new SqliteConnection("datasource=:memory:");
_connection.Open();
_options = new DbContextOptionsBuilder()
.UseSqlite(_connection)
.Options;
using (var context = new MyContext(_options))
context.Database.EnsureCreated();
}
public void Dispose()
{
_connection.Close();
}
[Fact]
public void Test()
{
using (var context = new MyContext(_options))
{
// use in memory database
context.ControlGroup ...
}
}
}