我的问题的上下文是,我想为我的应用程序创建一些单元测试,执行一些关系特定的代码,所以我不能使用标准的.UseInMemoryDatabase(databaseName: dbContextName)
我改为.UseSqlite("DataSource=:memory:")
而不是为了解决这个问题。
但现在我得到:
SqliteException:SQLite错误1:'没有这样的表:ControlGroup'。
我怎样才能解决这个问题?
您需要在测试范围内保持连接打开并创建数据库。
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 ...
}
}
}