Решение IQueryable не реализует IDbAsyncQueryProvider для EF

#c# #asp.net #.net #entity-framework #entity-framework-core

Вопрос:

Я использую DbContextOptionsBuilder для своего теста ( от Microsoft.EntityFrameworkCore)

 var optionsBuilder = new DbContextOptionsBuilderlt;contextgt;();  optionsBuilder.UseInMemoryDatabase(dbname);  

В одном из моих тестов я хочу протестировать обновление

 _repository = new CategoryRepository(_userDBContext)  await _repository.UpdateCategoryAsync(category);  

Используется UpdateCategoryAsync FirstOrDefaultAsync , и в этом проекте я использую System.Data.Entity. В результате я получу сообщение об ошибке : The provider for the source IQueryable doesn't implement IDbAsyncQueryProvider. Only providers that implement IDbAs...

Как я мог решить эту проблему, все еще используя те же пакеты ( Microsoft.EntityFrameworkCore для моего тестового проекта и EF для того, где находится реализация обновления )?

Комментарии:

1. Итак, у вас есть старый и неисправный EF в производстве, и вы пытаетесь использовать EFCore, чтобы воспользоваться преимуществами базы данных UseInMemoryDatabase по сравнению с существующими моделями?

2. @Общее, именно так и обстоит дело . (EF 6.4.4 )

3. Вы не можете использовать запрашиваемые методы расширения одной библиотеки с запрашиваемыми реализациями из другой библиотеки. Обе библиотеки имеют методы расширения с одинаковыми именами, но они работают только со «своими» объектами/интерфейсами. Коротышка, то, о чем ты просишь, не сработает. И смешивать два EFS в любом случае ужасная идея, так как у них так много различий. И InMemoryProvider не рекомендуется даже для EF Core, так как он сильно отличается от реальных поставщиков баз данных.