Ответ 1
Здесь у вас есть ссылка на точные классы, которые вам нужно реализовать. http://msdn.microsoft.com/en-us/data/dn314429.aspx#async
Я пытаюсь создать unit test мой первый репозиторий в новом проекте, где мы решили использовать EF6 в основном для асинхронных файлов. У меня возникают проблемы с подделкой IDbSet для моей модели и использование любого Linq перед использованием новых асинхронных тонкостей.
Я использую FakeDbSet как указанный в этом сообщении. Если я делаю простой запрос, например
await set.FirstOrDefaultAsync(e => e.Approved);
это отлично работает.
Проблема возникает, когда я пытаюсь сделать:
await set.OrderByDescending(e => e.Date)
.FirstOrDefaultAsync(e => e.Approved)`
Затем я получаю сообщение об ошибке:
System.InvalidOperationException: поставщик исходного IQueryable не реализует IDbAsyncQueryProvider.
Разрывая свободный синтаксис и анализируя результат на каждом шаге, мне ясно, что IDbAsyncQueryProvider исчезает после первого "обычного" оператора Linq (например, OrderBy
, Where
или Select
).
Как я могу заставить это работать?
Обновить (так как была некоторая путаница): Есть 2 проекта; назовите их репозиторием и тестом. Тестирование ссылок на референции. Вызов Where
происходит в репозитории, и он не знает о FakeDbSet (и не должен, поскольку это класс только для проверки).
Обновление 2. Простой демонстрационный проект
Здесь у вас есть ссылка на точные классы, которые вам нужно реализовать. http://msdn.microsoft.com/en-us/data/dn314429.aspx#async