Корень запроса Entity Framework Core типа FromSqlQueryRootExpression не обрабатывался кодом поставщика. Из теста xunitC#

Место общения программистов C#
Anonymous
Корень запроса Entity Framework Core типа FromSqlQueryRootExpression не обрабатывался кодом поставщика. Из теста xunit

Сообщение Anonymous »

У меня есть метод, вызывающий FromSqlRaw, он отлично работает при вызове API, но не работает при вызове из теста XUnit

Код: Выделить всё

return await _dbContext.Entity.FromSqlRaw(sqlSelect, parameters).FirstOrDefaultAsync();
Я установил DbContextOptionsBuilder и использовал UseInMemoryDatabase вместо запроса к фактической базе данных:

Код: Выделить всё

var optionsBuilder = new DbContextOptionsBuilder();
optionsBuilder.UseInMemoryDatabase("My_database");

_dbContext = new MyDbContext(optionsBuilder.Options);
_entityRepository = new EntityRepository(_dbContext );
_dbContext.Database.EnsureDeleted();
Вызовы модульных тестов:

Код: Выделить всё

var result = await _entityRepository.GetEntityAsync(expectedEntity.EntityID);
Я получаю следующую ошибку:

System.InvalidOperationException: корень запроса типа «FromSqlQueryRootExpression» не был обработан кодом поставщика. Эта проблема возникает при использовании метода, специфичного для поставщика, у другого поставщика, где он не поддерживается. при вызове этого из теста xUnit.

Я пробовал удалить

Код: Выделить всё

.FromSqlRaw(sqlSelect, parameters).FirstOrDefaultAsync();
и просто сказал

Код: Выделить всё

return await _dbContext.Entity.FirstOrDefaultAsync();
Это сработало нормально. Похоже, проблема связана с методом FromSqlRaw.

Вернуться в «C#»