Используя EntityFrameWorkCore и SqlLite в памяти, я получаю ошибку «нет такой таблицы: ControlGroup» - PullRequest
1 голос
/ 09 апреля 2019

Суть моей проблемы в том, что я хочу создать несколько модульных тестов для моего приложения, которое выполняет некоторый реляционный код, поэтому я не могу использовать стандарт .UseInMemoryDatabase(databaseName: dbContextName). Вместо этого я изменил его на .UseSqlite("DataSource=:memory:"), чтобыисправить это.

Но теперь я получаю:

SqliteException: SQLite Ошибка 1: 'нет такой таблицы: ControlGroup'.

Как я могу исправитьэто?

1 Ответ

1 голос
/ 10 апреля 2019

Вам необходимо оставить соединение открытым в пределах вашей тестовой области и создать базу данных.

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 ...
        }
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...