#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, так как он сильно отличается от реальных поставщиков баз данных.